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