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 次 |
| 最近记录: |