2011-02-06 56 views

回答

222

我會使用這樣的規則:

RewriteEngine On 
RewriteCond %{HTTP_HOST} !="" 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

第一個條件檢查主機值是否不爲空(在HTTP/1.0的情況下);第二個檢查主機值是否不以www.開頭; HTTPS的第三次檢查(%{HTTPS}onoff,所以%{HTTPS}sonsoffs並且在ons的情況下s匹配)。 RewriteRule的替代部分然後將信息部分合併到完整的URL。

編輯:不工作與網址,如:https://yourdomain.com/en/usa

+25

只有當您希望所有子域轉發到www.yourdomain.com時,此解決方案才能正常工作。如果您只想強制www,則應更新第二行:`RewriteCond%{HTTP_HOST}^yourdomain.com [NC]` – 2013-05-14 19:04:15

+1

我沒有收到我的子域名被轉發至www.mydomain的任何信息。com使用規則中發佈的問題... – lol 2013-07-18 23:21:18

37

這將做到這一點:

RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 
+0

簡單而有效! – ChaseMoskal 2014-04-30 08:44:44

+0

謝謝,但https://呢? – 2017-09-26 19:21:20

1

下應該前綴「WWW」到沒有任何一個請求,並重定向編輯請求新的URI。

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

這不會使用子工作。

domain.com正確地被重定向到www.domain.com

images.domain.com被重定向到www.images.domain.com

相反,如果該子域檢查是「不WWW」,檢查是否有兩個點:如果你想給你的網站的所有非www請求重定向到www的版本

RewriteCond %{HTTP_HOST} ^(.*)$ [NC] 
RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\. [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^HTTP%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
4

,所有你需要做的就是添加下面的代碼到你的.htaccess文件:

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

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301] 

這重定向到example.com排除www.example.com子域。

0

這個工作就像魔術爲我

的RewriteCond%{HTTP_HOST}^sitename.com [NC]重寫規則^(。*)$ https://www.sitename.com/ $ 1 [L,R = 301,NC]