Apache mod_rewrite работает в .htaccess, но не в httpd.conf - PullRequest
7 голосов
/ 25 февраля 2011

Я экспериментирую с mod_rewrite впервые (я новичок в сети, но пытаюсь учиться). Я пытаюсь заставить bob.html перенаправить на alice.html (читай: URL остается прежним, содержимое страницы alice.html ). Оба файла находятся в / var / www / . Я использую Ubuntu 10.10 с Apache 2.2.16.

Вот что работает в файле .htaccess , расположенном в каталоге / var / www / :

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^bob.html$ alice.html
</IfModule>

Это ведет себя, как и ожидалось, но не работает при перемещении в файл httpd.conf (просто изучение лучших практик с производительностью и тому подобное). Я где-то читал, что при использовании mod_rewrite в файле httpd.conf требуются начальные косые черты, поэтому мой файл httpd.conf выглядит следующим образом:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/bob.html$ /alice.html
</IfModule>

Я также читал, что / etc / apache2 / sites-enabled / 000-default должен иметь AllowOverride , установленный в All .

<Directory /var/www> 
...
AllowOverride All
...
</Directory>

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

При всех этих настройках конфигурации перенаправление не работает. Я проверил, чтобы убедиться, что сам файл читается (кто-то предположил, что httpd.conf больше не используется и вместо него используется apache2.conf ), вставив ошибочный код. Я взглянул на пару других вопросов / ответов, но до сих пор не могу понять.

Редактировать : Следует отметить, что я использую / etc / init.d / apache2 restart после каждого изменения на httpd.conf для перезапуска Apache и (надеюсь) перезагрузить конфигурацию.

1 Ответ

1 голос
/ 24 марта 2011

Попробуйте обернуть rewriterules в файл httpd.conf в теги.Кажется, что поведение изменяет поведение, делая его более похожим на файл .htaccess.

...