什么原因导致从 example.com 到 www.example.com 的重定向不起作用?

什么原因导致从 example.com 到 www.example.com 的重定向不起作用?

我使用一组非常标准的重写规则来重定向到 www 域。它在我的其中一台服务器上有效,但在另一台服务器上无效。

我无论如何也想不出这个问题,因为除了这个之外,其他重写规则都有效。

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

是否需要更改某些 apache 配置设置,或者某些重写规则存在冲突?

答案1

可能导致问题发生的因素有:

  1. 您将规则放在 .htaccess 中,并且 .htaccess 被禁用AllowOverride None
  2. 你把规则放在<Location>标签里,不支持(该页面的搜索位置)
  3. 你将规则放入DirectoryMatch指令中,然后您的目录与表达式不匹配(不相关,这个规则可以放在任何目录标签之外,这样会更快)
  4. 你把它放在 apache 配置文件中,然后忘记重新加载 apache(或者您进行了正常重新加载但其停滞了,请尝试进行硬重新加载)
  5. 你在应用的规则之前放置一个重写规则,并且从未读过([L] 标签?)
  6. 如果你在测试预生产网站时喝醉了并编辑了生产服务器设置,请更认真地检查此指令是否在 VirtualHost 中,这确实匹配服务器名称或服务器别名example.com 的。
  7. 你没有已启用 mod_rewrite在此服务器上,这是<IfModule mod_rewrite.c>

  8. 如果你被重定向到错误的地方,也许你之前犯了一个错误,但301-永久代码暗示你的浏览器甚至不会重新调用你的固定网络服务器,直到你关闭并重新打开浏览器

如果您没有发现@larsk 所要求的操作,请启用 rewriteLog,尤其是调试#5。

答案2

你的重定向小丑中缺少 [L] 规则!是的,问题解决了!

相关内容