Darn потребовалось некоторое время, отслеживая эту причуду. У меня есть глобальные переписывания-правила, определенные в httpd.conf
(или включаемый, не будет делать разницы), чтобы заставить внешний редирект для определенных шаблонов URL:Apache httpd.conf mod_rewrite отменен, если .htaccess использует mod_rewrite
<Directory "/home/*">
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^.*wrong\.php$ http://example.net/void.html [R,L]
</IfModule>
</Directory>
Это работает блестяще для любого виртуального хоста, который Безразлично» t имеет файл .htaccess
с помощью mod_rewrite. Однако, если vhost использует какие-либо правила mod_rewrite, это не работает. Даже просто RewriteEngine on
, без каких-либо правил, достаточно для отмены правил httpd.conf
для vhost. Это ожидаемое поведение? На Apache/2.2.15. Я пробовал с и без R & L флаги, с оберткой и без <Directory>
, и объявлен до или после виртуальных хостов, но правила просто не сработают.
Кто-то сохранит мое здравомыслие и скажет мне, как иметь (не конфликтующие) правила в httpd.conf
и .htaccess
работать вместе. Это должно быть возможно, и я ожидаю, что это будет поведение по умолчанию?
Edit: В соответствии с просьбой, образец .htaccess
файл: =^_^=
RewriteEngine on
Даже только что, и только. Достаточно, чтобы правила не совпадали, кажется, что раньше mod_rewrite
обрывается, а новый чистый набор правил запускается, когда .htaccess
вступает в игру. Также любая другая линия, связанная с mod_rewrite
, вызывает то же самое. Если я придерживаюсь .htaccess
, например. RewriteRule ^([X-Z])heRmaGerd[1-3]\.FOObAR$ /wherever/$1
(с RewriteEngine on
, или сам по себе как единственная строка), он, безусловно, не будет соответствовать, но достаточно отменить все, что было определено ранее.
Вы уверены, что аннулирование? Или у вас есть правило, соответствующее новому запросу? Последнее кажется более вероятным, но без вашего «.htaccess» я не могу вам помочь. – Walf
Ну, конечно, этого не происходит, поэтому я предполагаю, что он отменен. В '.htaccess' нет более поздних правил соответствия. Как я уже сказал, даже простого «RewriteEngine on», как единственного в файле .htaccess, достаточно, чтобы этого не произошло. Если я прокомментирую это, то правило 'httpd.conf' будет соответствовать ожидаемому. Такая же модель протестирована в нескольких доменах. Кроме того, нет никакого другого использования mod_rewrite в файлах '* .conf', поэтому для меня загадка, что вызывает это поведение. –
Я могу подтвердить, что вы не сумасшедший :), это действительно так, даже на 2.4.6 –