2011-04-13 71 views
8

這是我的.htaccess代碼 因此如果用戶只輸入domain.com將被重定向到www.domain.com現在htaccess的:exluce一些領域中的RewriteCond

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

我的問題是,我有一個指向相同域路徑的新域名 因此,即使新域名被「透明地」重定向到domain.com ...

如何從該規則中排除某個域名?

謝謝!

回答

8

你可以嘗試使改寫通用的,因此所有未與www開始請求重定向,但正確的/請求的域。

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

或者,你可以檢查,而不是因爲如果與域開始domain.com

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

希望這有助於。

+1

感謝偉大的答案。你可以逐個描述代碼部分嗎?只是第一個代碼。 – Hamidreza 2014-08-10 09:52:24

+0

很好的答案。詳細解釋你的語法會使這是一個優秀的答案。只是說。 :) – 2014-12-19 17:08:04

+0

OP試圖將多個域重定向到相同的路徑,但原始的'RewriteCond'特別尋找單個域(例如www.domain.com)。我的第一個例子,將重定向任何域,不以'www.'所請求的路徑與前置的'www.'開始。該'RewriteRule'通過第一組從'RewriteCond'正則表達式這樣做,這是什麼'%1'完成。 '$'用於引用的'RewriteRule'表達的基團,而''%被用來引用'RewriteCond'的基團。希望澄清事情。 – clmarquart 2015-01-07 14:10:25