mod_rewrite – 添加www

我试图强制www为我的网站地址与.htaccess

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

如果我打开mysite.com这个工作正常 – 它添加www 。 它变成http://www.mysite.com/index.php

但是,如果我打开mysite.com/subpage我将redirect到http://www.mysite.com/index.php ,而不是http://www.mysite.com/subpage

但是,如果我打开http://www.mysite.com/subpage我不会得到redirect(这是预期的行为)。

我怎样才能解决这个问题? 我想将所有请求redirect到我的网站www子域。

问题就在这里:

 RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 

^指定字符串的开始,而$指定结束。

为了使其工作,您需要在.com或.+之后选择通配符。

重申Alex的话:

  <Ifmodulee mod_rewrite.c> RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} !^www\..+$ [NC] RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </Ifmodulee> 

从超棒的HTML5 Boilerplate .htaccess

 <Ifmodulee mod_rewrite.c> RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} !^www\..+$ [NC] RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </Ifmodulee> 

实际上,我不得不同意Szanto先生。

看来问题不在于:

 RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 

通过一些额外的研究(通过谷歌),我发现这对我很好:

 <Ifmodulee mod_rewrite.c> RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </Ifmodulee> 

Szanto先生的回答虽然格式良好,但似乎将缺少“www”的所有请求重定向到与所附的“www”重定向。 这对于大多数子域来说不是一个理想的结果。 如果在TL域名之前没有“www”且没有子域名,则上述代码仅重定向。

希望这可以帮助别人。