2013-06-28 87 views
2

我有多個域擴展網站:重寫域擴展

example.com 
example.de 
example.fr 
example.co.uk 

我想人們重定向到.com域,以便將網址被改寫爲:

example.de  -> http://www.example.com/?loc=de 
example.fr  -> http://www.example.com/?loc=fr 
www.example.co.uk -> http://www.example.com/?loc=uk 

但是,我不知道如何選擇URL example.(fr)/bla的域擴展部分並重寫。我意識到,我可以爲每個EX:

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

但是我想使它這樣,如果我買更多的擴展,我不會需要更新httpd.conf文件等

創建特殊情況

任何建議表示讚賞!

回答

3

創建一個覆蓋多個域的規則非常簡單。爲了達到你想要什麼,你可以做這樣的事情:

RewriteCond %{HTTP_HOST} ^(www\.)?example\.(de|fr|co\.uk)$ 
RewriteRule .* http://www.example.com/?loc=%2 [R] 

這需要example.de並重寫它作爲example.com/~loc=de的要求,並努力也爲.fr,並.co.uk。不過要注意的是,它將.co.uk版本重寫爲example.com/~loc=co.uk,這並不是您想要的。還需要修改新域名。

所以,這裏的這一點更爲通用的解決方案,但要達到你想要什麼:

RewriteCond %{HTTP_HOST} ^(www\.)?example\.(co\.)?(.*)$ 
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ 
RewriteRule .* http://example.com/?loc=%3 [R] 

現在一點解釋:

第一RewriteCond任何域匹配在它,這樣exampleexample.co.ukwww.example.dewww.example.xxx

第二RewriteCond可確保HTTP_HOST 我sn'texample.comwww.example.com

最後,RewriteRule重寫任何符合這兩條規則的內容,並將域的最後一部分作爲參數粘到末尾。

http://www.example.co.uk/ - >http://example.com/?loc=uk

http://www.example.de/ - >http://example.com/?loc=de

http://www.example.xxx/ - >http://example.com/?loc=xxx

http://www.example.com/不會重定向。


注意,在上述方案中,如果用戶去http://www.example.de/some/path/index.php,路徑就不會被重定向。如果您需要此功能,那麼我們需要在重定向中包含路徑:

RewriteRule (.*) http://example.com/$1?loc=%3 [R]