什么会导致从example.comredirect到www.example.com,而不是工作?

我正在使用一组非常标准的重写规则来redirect到www域。 它在我的一台服务器上工作,但不在另一台服务器上。

我不能为我的生活找出问题,因为其他重写规则工作,除了这一个。

RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^example.com [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,NC] 

有一些Apache的configuration设置,我需要改变,或一些冲突的重写规则?

事情可以做到这一点错了:

  1. 您将规则放在.htaccess中,并且.htaccess由AllowOverride None禁用
  2. 你把规则放在一个<Location>标记中, 这是不受支持的 (在那个页面中查找位置)
  3. 您将规则放在DirectoryMatch指令中,并且您的目录与expression式不匹配 (不相关,这个规则可以放在任何Directory标签之外,它会更快)
  4. 你把这个放在一个apacheconfiguration文件中,并忘记重新加载apache (或者你做了一个优雅的重装,它停滞了,试着重新加载)
  5. 你把一个rewriteRule放在应用的那个之前, 这个永远不会被读取 (一个[L]标签?)
  6. 在testing预生产网站时,您已经喝醉了,编辑了生产服务器设置,更加严格地检查这条指令是否与虚拟主机中真正匹配 example.com的Servername或ServerAlias
  7. 你没有在这个服务器上启用mod_rewrite ,并且在<IfModule mod_rewrite.c>部分

  8. 如果你被redirect到一个错误的地方,也许你以前犯了一个错误,但301永久代码暗示你的浏览器甚至不会重新打电话给你的固定的networking服务器,直到你closures并重新打开浏览器

如果你没有find@larsk说你要做的事,启用rewriteLog,特别是debugging#5。

你错过了你的redirectbozo的[L]规则! 是的,修好了!