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

时间:2011-02-25 18:52:48

标签: .htaccess mod-rewrite httpd.conf

我第一次尝试使用mod_rewrite(我是网络新手,但是我正在努力学习)。我正在尝试 bob.html 重定向到 alice.html (读取:网址保持不变,网页内容为 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>

这可以按预期运行,但是当移动到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 设置为全部

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

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

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

编辑:应该注意每次更改 httpd.conf /etc/init.d/apache2 restart >重启Apache并(希望)重新加载配置。

1 个答案:

答案 0 :(得分:1)

尝试将重写文件包装在&lt; Location /&gt;&lt; / Location&gt;中的httpd.conf文件中标签。似乎改变了行为,使其更像.htaccess文件。