Подтвердить что ты не робот

Директивы mod_rewrite работают в .htaccess, но игнорируются в httpd.conf

борется с mod_rewrite в apache2. Проблема в том, что директивы игнорируются при вводе в httpd.conf.

Если я устанавливаю AllowOverride All в доступных сайтах/по умолчанию и добавляю директиву в .htaccess, он работает, и каждый запрос появляется в файле mod_rewrite.log.

Но когда я удаляю .htaccess и AllowOverride All и добавляю директиву в httpd.conf, он игнорируется.

Httpd.conf выглядит следующим образом:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteLog "/var/log/apache2/mod_rewrite.log"
    RewriteLogLevel 4 
    RewriteRule ^/.* http://www.google.com                                     
</IfModule>

(Просто выберите google для отладки)

Phpinfo() показывает mod_rewrite среди загруженных модулей, rewrite.load имеет символическую ссылку на /mods -enabled для доступных мод, т.е. на самом деле. Кроме того, когда я удаляю mod_rewrite.log, он создается при запуске сервера, что ИМО указывает, что HTTPd.conf читается, и mod_rewrite.c существует. Но mod_rewrite.log остается пустым, что указывает на то, что запрос не отправляется в mod_rewrite. Кроме того, при вводе бессмыслицы в сервер httpd.conf не запускается и не выдается ошибка.

Что мне не хватает? Есть ли что-то вроде AllowOverride, я должен установить даже для основных файлов конфигурации?

Я уже играл с /, поскольку .htaccess использует относительные пути, а httpd.conf - нет. Я также попытался установить теги <Directory>, что для меня не имеет смысла, но все же попробовал посмотреть, не изменит ли он что-нибудь... help?!


Подумал сам, но если кто-то столкнется с одной и той же проблемой:

"Глобальные" правила перезаписи, установленные в httpd.conf, должны быть включены в каждый виртуальный хост, используя

<VitualHost *:80>
    RewriteEngine on
    RewriteOptions Inherit
</VirtualHost>

В противном случае они не будут работать в VHosts. Кроме того, правила родителя применяются ПОСЛЕ правил для детей.

4b9b3361