Mod rewrite 301将非www重定向到www不总是工作

Mod rewrite 301将非www重定向到www不总是工作,mod-rewrite,Mod Rewrite,我已经阅读了大量的文章和页面,试图弄明白这一点。我让它大部分都在工作。我有一个.htaccess文件设置,我正在尝试将(301)我的站点中的任何页面从非www重定向到www版本 RewriteEngine On RewriteCond %{HTTP_HOST} ^example.com [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] 它似乎从基本url开始工作。但是,它不会重定向子页面 这项工作: example.com-

我已经阅读了大量的文章和页面,试图弄明白这一点。我让它大部分都在工作。我有一个.htaccess文件设置,我正在尝试将(301)我的站点中的任何页面从非www重定向到www版本

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
它似乎从基本url开始工作。但是,它不会重定向子页面

这项工作:

example.com->www.example.com

这不起作用:

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


任何帮助都将不胜感激

我认为您需要添加一个
\
以避开域中的点(第2行)

例如:

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

…如图所示:

以下是我的规则,适用于我的产品环境:

# 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]

隐马尔可夫模型。。。我在我的网站上使用了几乎相同的重写,效果很好。你可以尝试添加RewriteBase/但我认为这不会有什么不同。真的很奇怪。。。如果你删除“foo.html”,你可以在这里尝试一个实例,你会看到它开始工作了。啊,我想你的htaccess中一定有另一条规则把它搞糟了。例如,如果我转到它,它将正确地转发到www和404页面。在第3行,我不得不将
^(.*)$
替换为
^(.*)/$
,以避免在域后有两个斜杠
/
。(使用Django 1.5.4)
# 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]