Apache mod_重写-添加www
我正试图使用Apache mod_重写-添加www,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我正试图使用.htaccess强制www查找我的网站地址: 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我会重定向到http://www.mysite.com/in
.htaccess
强制www
查找我的网站地址:
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
我会重定向到http://www.mysite.com/index.php
再次,而不是http://www.mysite.com/subpage
但是如果我打开http://www.mysite.com/subpage
我没有得到重定向(这是预期的行为)
我怎样才能解决这个问题?我希望将所有到我的站点的请求重定向到www
子域。从超级:
重写cond%{HTTPS}=在…上
重写cond%{HTTP_HOST}^www\..+$[NC]
重写规则^http://www.%{HTTP_HOST}%{REQUEST_URI}[R=301,L]
问题就在这里:
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
^
指定字符串的开头,而$
指定字符串的结尾
为了使其工作,您需要在.com或+
之后选择一个通配符
要重申Alex所说的话:
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
重写cond%{HTTPS}=在…上
重写cond%{HTTP_HOST}^www\..+$[NC]
重写规则^http://www.%{HTTP_HOST}%{REQUEST_URI}[R=301,L]
事实上,我不同意萨托先生的观点
看来问题不在于:
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
通过一些额外的研究(通过谷歌),我发现这对我来说非常有效:
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
重写cond%{HTTPS}=在…上
RewriteCond%{HTTP_HOST}^mysite\.com$[NC]
重写规则^http://www.%{HTTP_HOST}%{REQUEST_URI}[R=301,L]
Szanto先生的回答虽然格式良好,但似乎将所有缺少“www”的请求重定向到附加了“www”的重定向。对于大多数子域来说,这不是一个理想的结果。上述代码仅在TL域名前没有“www”和子域时重定向
希望这对其他人有帮助。我最喜欢上面的答案——任何使用子域的人都必须更加具体,不要不必要地(错误地)附加www。
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>