2009-04-17 85 views
4

什麼RewriteRule(使用.htaccess/mod_rewrite)我應該使用重定向http://example.com/blog/(與www或不)到http://blog.example.com/重寫URL到http://blog.example.com/

我用以下,但得到重定向循環:

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

RewriteCond %{HTTP_HOST} www\.example\.com [NC] 
RewriteRule ^(.*)$ http://www.example.com/blog/ [L,R=301] 

回答

6

在現有的規則,你似乎有一些東西,周圍的錯誤的方式,我不認爲有任何需要的負面(即!)測試。

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com [NC] 
RewriteRule ^/blog/$ http://blog.example.com/ [L,R=301] 

不過我建議你不要使用RewriteCond指令,檢查主機,只需確保規則是在正確的VirtualHostwww.example.com

<VirtualHost ...> 
ServerName www.example.com 
ServerAlias example.com 

RewriteRule ^/blog/ http://blog.example.com/ [L,R=301] 
</VirtualHost> 

(NB:假定blog.example.comwww.example.com實際上是單獨的虛擬主機)