創建一個覆蓋多個域的規則非常簡單。爲了達到你想要什麼,你可以做這樣的事情:
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
任何域匹配在它,這樣example
爲example.co.uk
,www.example.de
,www.example.xxx
等
第二RewriteCond
可確保HTTP_HOST 我sn'texample.com
或www.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]