301将非www重定向到www并不总是有效

时间:2011-05-12 00:16:16

标签: mod-rewrite

我已经阅读了大量的帖子和页面试图解决这个问题。我有它主要工作。我有一个.htaccess文件设置,我正在尝试将我网站中的任何页面从非www重定向到(www)。

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

它似乎从基本网址开始工作。但是,它不会重定向子页面。

这有效:

example.com - > www.example.com

这不起作用:

example.com/foo.html - > www.example.com/foo.html

非常感谢任何帮助

3 个答案:

答案 0 :(得分:2)

我认为你需要添加\来逃避你域中的点(第2行)。

如:

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

......如此处所示:http://www.hostingdiscussion.com/promotion-marketing/26083-301-redirect-non-www-www-vice-versa-good-search-engine-optimization-technique.html

答案 1 :(得分:0)

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

答案 2 :(得分:0)

这是我在我的生产环境中工作的规则:

# If domain name without "www", add them:
RewriteCond %{HTTP_HOST} ^mydomainname\.(fr|com|net|org|eu) [NC]
# without www => force redirection:
RewriteRule (.*) http://www.mydomainname.%1$1 [QSA,R=301,L]