www 到非 www .htaccess 不起作用

Posted

技术标签:

【中文标题】www 到非 www .htaccess 不起作用【英文标题】:www to non-www .htaccess not working 【发布时间】:2014-07-24 00:42:48 【问题描述】:

编辑:问题是域名是在 GoDaddy 购买的,但托管在 Endurance International Group(他们拥有 Hostgator 和其他一些小型网络主机)。 Endurance 默认没有激活 mod_rewrite,这就是它不起作用的原因。

我在 GoDaddy 上托管了该网站,现在一切正常。


我有一个网站,Google 正在为其 www 和非 www 版本编制索引。我只想要非www版本。这是我当前的 .htaccess 代码。底部单个文件的 301 重定向有效,但顶部的 www 到非 www 代码不起作用。

我做错了什么?

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

# Redirect old file path to new file path
Redirect 301 /aboutcarytreeservice.html http://example.com/about.html
Redirect 301 /carytreeservice.html http://example.com/services.html
Redirect 301 /treeremovaldurhamnc.html http://example.com/durham.html
Redirect 301 /treeservicedurhamnc.html http://example.com/durham.html
Redirect 301 /treeremovalraleighnc.html http://example.com/

【问题讨论】:

【参考方案1】:

这个条件是错误的:

RewriteCond % ^www.example.com [NC]

改成:

RewriteCond %HTTP_HOST ^www\.example\.com$ [NC]

【讨论】:

注释掉所有Redirect 301 行并在不同的浏览器中重新测试。【参考方案2】:

试试这个:

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

它将查看 URL 中是否有“www”,如果没有,则会导致 301 重定向到相同的 URL(添加“www”)。

【讨论】:

您确定在服务器上启用了 mod_rewrite 吗?请检查一下。 嗨 @user2036972,这是在 GoDaddy 上的 Linux 服务器上,默认情况下启用了 mod_rewrite。我要去那里进行三次检查,但我有 99.9% 的把握确定这不是问题。

以上是关于www 到非 www .htaccess 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 使用 SSL/HTTPS 将 www 重定向到非 www

如何将域从www重定向到非www? [复制]

htaccess 将 www 重定向到非 www 仍然将 .php 扩展名放在 uri 中

sh Apache2将www重定向到非www .htaccess

apache_conf .htaccess将www重定向到非www

htaccess 强制 https 并将 www 重定向到非 www,但没有其他子域