【发布时间】:2011-07-04 12:42:29
【问题描述】:
我是第一次尝试 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。 p>
<Directory /var/www>
...
AllowOverride All
...
</Directory>
我认为这只是为了与 .htaccess 一起使用,但我不确定,所以我把它留在了。
使用所有这些配置设置,重定向不起作用。我已经测试以确保文件本身正在被读取(有人建议不再使用 httpd.conf 而是使用 apache2.conf)插入错误的代码.我已经查看了其他几个问题/答案,但我仍然无法弄清楚。
编辑:需要注意的是,每次更改 httpd.conf 后我都在使用 /etc/init.d/apache2 restart > 重新启动 Apache 并(希望)重新加载配置。
【问题讨论】:
-
httpd.conf 指令中没有前导斜杠会怎样?
-
行为没有变化。仍然不起作用,并且似乎没有发生任何不同的事情。
-
您在 httpd.conf 文件中的哪个位置放置了
<IfModule>块? -
<IfModule>是文件中唯一的文本。
标签: .htaccess mod-rewrite httpd.conf