我是第一次尝试 mod_rewrite(我是网络新手,但正在努力学习)。我试图让bob.html重定向到alice.html (阅读:URL 保持不变,页面内容是alice.html)。这两个文件都在/var/www/中。我正在运行带有 Apache 2.2.16 的 Ubuntu 10.10。
以下是放置在/var/www/目录中的.htaccess文件中的工作原理:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^bob.html$ alice.html
</IfModule>
这符合预期,但在移至 httpd.conf 文件时不起作用(只是学习具有性能的最佳实践等)。我在某处读到,在httpd.conf文件中使用 mod_rewrite 时,需要前导斜杠,所以我的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 )。我已经查看了其他几个问题/答案,但我仍然无法弄清楚。
编辑:应该注意的是,我在每次更改httpd.conf后都使用/etc/init.d/apache2 restart来重新启动 Apache 并(希望)重新加载配置。