Nic*_*uge 11 apache .htaccess mod-rewrite
我正试图强制www
我的网站地址.htaccess
:
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^(.*)$ http://www.mysite.coml/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
如果我打开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
子域.
Ale*_*lex 17
从精湛的HTML5 Boilerplate.htaccess
:
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
Kor*_*nto 15
问题就在这里:
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
Run Code Online (Sandbox Code Playgroud)
^
指定字符串的开头,同时$
指定结束.
为了使其工作,您需要在.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>
Run Code Online (Sandbox Code Playgroud)
实际上,我不同意Szanto先生的意见.
看起来问题不在于:
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
Run Code Online (Sandbox Code Playgroud)
通过一些额外的研究(通过谷歌),我发现这对我很有用:
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
Szanto先生的答案,虽然格式很好,但似乎重定向所有缺少'www'的请求,并附加了'www'重定向.对于大多数子域,这不是理想的结果.如果TL域名之前没有'www'且没有子域,则上述代码仅重定向.
希望这有助于其他人.
归档时间: |
|
查看次数: |
13773 次 |
最近记录: |