http://www.http:// 重定向根本不起作用



我想要一个相当简单的功能,我希望我的网站在有人在我的域名之前放置www.时能够正常工作。我的偏好是将所有http://www.请求重定向到http://,而无需任何复杂的事情。

我已经尝试了两种方法,但都不起作用。第一个选项是简单地在站点.htaccess中添加以下重写引擎命令(作为记录,我确认它正在工作(

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

我尝试了此代码的许多变体,但没有一个做任何事情。即使在重置浏览器缓存后,通过 Tor 访问,如果我使用www.前缀进入我的网站,那么它根本无法加载,Firefox 会给我一个"找不到服务器"错误。

我尝试的第二件事是删除所有重写代码,只需添加DNS记录A,主机www指向我的IP地址。等了一会儿后,网站现在可以工作了!但是,它非常不一致,因为如果我访问www.example.com那么它会删除www.,但如果我去www.example.com/page.html,那么它不会删除它(但它仍然有效(。另一个奇怪的问题是,如果我输入www.example.com/folder/page,它会把我送到www.example.comfolder/page

有没有人对我应该做什么或我可能做错了什么有任何建议?

这应该有效。

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

(这不一定是答案,但我的声誉还不足以发表评论。

前面的评论看起来应该可以完成这项工作,因此重写发生了一些意想不到的事情。

您可以尝试在较低级别启用重写日志记录,以查看重写规则的情况。 如果未发现问题,则将日志记录级别提高一个级别。 请注意,日志记录mod_rewrite操作可能会生成非常大的日志,因此在测试平台或相对空闲的主机上尝试此操作是

谨慎的。
# Enable mod_rewrite
RewriteEngine On
# RewriteLogLevel: Controls verbosity of mod_rewrite log
#                  0=off, 9=max
RewriteLogLevel 2

作为旁注和 imo,我会在配置文件中执行此操作,而不是在 .htaccess 文件中执行此操作,因为此规则应在此主机/vhost 上应用于整个站点。 这也使得 Apache 无法通过忽略 .htaccess 文件来避免执行重写。

最新更新