Мы мигрируем с одного поддомена на другой. Этот конкретный домен имеет подмножество из нескольких веб-сайтов. Я настроил следующую переписывание для обработки перенаправления глобально:
В docroot/.htaccess
(«Правило №1»)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^virtual\.example\.com$
RewriteRule ^(.*)$ http://events.example.com/$1 [L,R=301]
В целом это работает, за исключением нескольких сайтов, у которых есть свои правила перезаписи. Например, /roadshow/2015/
есть следующее правило catch-all:
В docroot/roadshow/2015/.htaccess
(«Правило №2»)
RewriteCond %{REQUEST_URI} ^(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.php$
RewriteRule .* framework/main.php?url=%1&%{QUERY_STRING} [L]
Проблема:Страницы /roadshow/2015/
продолжают загружаться, как будто Правила №1 не существует.
Что я тут упускаю? :)
решение1
Директивы mod_rewrite в файлах .htaccess во вложенных папках будут иметь больший приоритет, чем директивы в родительских папках — попробуйте использовать их RewriteOptions Inherit
в файле .htaccess каждой вложенной папки (см.http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions).
Если вы используете Apache 2.4.8 или выше, вы можете использовать RewriteOptions InheritDown для автоматического применения ко всем дочерним файлам .htaccess вместо того, чтобы изменять каждый из них.