8

我是第一次尝试 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 并(希望)重新加载配置。

4

1 回答 1

2

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

于 2011-03-24T10:50:02.263 回答