首页 文章

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

提问于
浏览
7

我'm experimenting with mod_rewrite for the first time (I'是一个网络新手,但试图学习) . 我正在尝试将 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>

这可以按预期运行,但是当移动到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并(希望)重新加载配置 .

1 回答

  • 1

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

相关问题