Zend и .htaccess

Мое приложение "zend" по умолчанию имеет эту структуру по умолчанию

/zend + webroot
    /application
    /config
    /library
    /public
        .htaccess
        index.php

и по умолчанию .htaccess перенаправляет различные сведения о контроллере/действиях через. /public/index.php

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Я использую этот URL-адрес по умолчанию для доступа к приложению

http://domain/index.php

Теперь я перешел на общий хост, где webroot находится выше корня zend.

/webroot
    /zend
        /application
        /config
        /public
            index.php
           .htaccess

но я могу получить доступ только к своему приложению через этот URL

http://domain/zend/public/index.php

Я хочу иметь возможность использовать

http://domain/zend/index.php

и перенаправлять .htaccess.

и мне интересно, как я могу настроить файл .htaccess для перенаправления запросов URL. Я читаю этот учебник, но я не работал у меня

/webroot
    /zend
        .htaccess
        /application
        /config
        /library
        /public
            index.php

Это содержимое .htaccess в этом случае

RewriteEngine On

RewriteRule ^\.htaccess$ - [F]

RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]

Кто-нибудь может что-нибудь заметить?

Ответ 1

Создайте zend/index.php, содержащий этот код:

<?php include 'public/index.php';

Теперь создайте zend/.htaccess, содержащий этот код:

SetEnv APPLICATION_ENV development

RewriteEngine On
RewriteRule .* index.php

Убедитесь, что ваши файлы images/css/js находятся внутри zend/public/и не удаляют файл zend/public/.htaccess:)

Не забывайте, что запрос baseUrl не включает '/public', поэтому вам нужно будет добавить его самостоятельно, когда вы ссылаетесь на общедоступные файлы.

Привет,

Rob...

Ответ 2

Не забудьте изменить RewriteBase.

Ответ 3

Большинство общедоступных хостов, которые я использовал, по-прежнему позволяют загружать файлы за пределами веб-корня. Например,

/home/{username}/webroot/

... вы все равно можете загрузить в /home/{username}/, например:

/webroot
    index.php
   .htaccess
/application
/config

Затем в вашем загрузочном блоке просто замените public на webroot или если у вас есть ssh-доступ, удалите существующий webroot и замените его символической ссылкой на общий каталог zend, например:

rm -f webroot
ln -s public webroot