Я экспериментирую с 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 и (надеюсь) перезагрузить конфигурацию.