2010-08-16 30 views
2

我試圖制定一個通用重寫規則來將所有domain.com請求重定向到www.domain.com。.htaccess重寫規則非WWW到WWW而無需明確指定域

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

問題是這個重寫規則不匹配任何東西。我該如何改變它?由於

+0

這還不是一個特別簡單的任務,因爲該網址,可以採取結構。很明顯,你在那裏的代碼只會選擇具有一個點的頂級域名,例如.com,.info,.org等,並且不會提取.co.uk等等。通過使其更具動態性,儘管很難不拾取其他子域名。您最好的選擇是使用替代方式來指定TLD支持\。(com | co \ .uk | org),儘管這顯然不完全是動態的。 – 2010-08-16 13:13:20

回答

2

我想這個問題是,有你RewriteCond額外]的模式,有一個%RewriteRule引用HTTP_HOST時丟失的替代。所以,試試這個:

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

,並支付現金援助的擔憂豆蔻位,你也可以嘗試這樣的規則:

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

謝謝,這是解決方案 – Derk 2010-08-17 12:06:46

相關問題