Apache mod_rewrite在.htaccess中工作,但不在httpd.conf中工作

Chr*_*ris 7 .htaccess mod-rewrite httpd.conf

我是第一次尝试使用mod_rewrite(我是网络新手,但是我正在努力学习).我正在尝试让bob.html重定向到alice.html (读取:URL保持不变,页面内容为alice.html).这两个文件都在/ var/www /中.我正在运行Ubuntu 10.10 w/Apache 2.2.16.

这是在/ var/www /目录中放置的.htaccess文件中的作用:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^bob.html$ alice.html
</IfModule>
Run Code Online (Sandbox Code Playgroud)

这可以按预期运行,但是当移动到httpd.conf文件时它不起作用(只是学习具有性能的最佳实践等).我在某处读到,当在httpd.conf文件中使用mod_rewrite时,需要使用前导斜杠,因此我的httpd.conf文件如下所示:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/bob.html$ /alice.html
</IfModule>
Run Code Online (Sandbox Code Playgroud)

我还读到/ etc/apache2/sites-enabled/000-default需要将AllowOverride设置为All.

<Directory /var/www> 
...
AllowOverride All
...
</Directory>
Run Code Online (Sandbox Code Playgroud)

认为这只是与.htaccess一起使用,但我不确定所以我只是把它留在了.

使用所有这些配置设置,重定向不起作用.我已经通过插入错误代码来测试以确保文件本身正在被读取(有人建议不再使用httpd.conf并使用apache2.conf).我看了几个其他问题/答案,但我仍然无法弄明白.

编辑:应该注意的是,每次更改httpd.conf后我都会使用/etc/init.d/apache2 restart来重启Apache并(希望)重新加载配置.

Dav*_*Kok 2

尝试将重写规则包装在 httpd.conf 文件中的 <Location /></Location> 标记中。这似乎改变了行为,使其更类似于 .htaccess 文件。