创建涵盖多个域的规则非常简单。要实现您想要的,您可以执行以下操作:
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不是 example.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]