Apache .htaccess и Zend Rewrite конфликтуют с перенаправлением - PullRequest
1 голос
/ 23 февраля 2012

Я использую этот код .htaccess для перенаправления старого домена на новый домен:

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{HTTP_HOST} test.domain.eu(.*)
RewriteRule (.*) http://test.domain.be/$1 [R=301,L]

Это работает, также для подкаталогов.Но в каталоге / проекте есть проект Zend со следующим .htaccess:

SetEnv APPLICATION_ENV development

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

Когда я захожу в этот каталог в старом домене, перенаправление не работает.Я предполагаю, что эти 2 файла .htaccess конфликтуют друг с другом.У кого-нибудь есть идеи, как заставить это работать?

1 Ответ

2 голосов
/ 23 февраля 2012

Добавьте эти 2 правила:

RewriteCond %{HTTP_HOST} test.domain.eu(.*)
RewriteRule (.*) http://test.domain.be/$1 [R=301,L]

к /project .htaccess.

Когда сделан запрос URI, .htaccess всамый нижний каталог с .htaccess ищется и используется.

Предоставлено: @ TerryE.

т.е.

  • /folder/folder1/folder2является запрошенным URI, и, скажем, все они имеют .htaccess, тогда будет использоваться только папка .htaccess.

  • /folder/folder1/folder2 является запрошенным URI и позволяет только сказатьfolder1 имеет .htaccess, тогда папка .htaccess будет использоваться только.


Итак, сделайте это:

SetEnv APPLICATION_ENV development

RewriteEngine On

RewriteCond %{HTTP_HOST} test.domain.eu
RewriteRule (.*) http://test.domain.be/project/$1 [R=301,L]

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