你可以试试这样的:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteRule (.*) http://www.domain.co.uk/$1 [L,R=301]
重要的一点是使用RewriteCondition,它适用于 HTTP 主机标头。简单来说,如果RewriteCond 放在普通的RewriteRule 之前,则仅在条件匹配时才使用该规则。
上面的代码摘录将所有来自.COM的请求重定向到.CO.UK域,所以如果你只需要重定向某个目录,那么你需要相应地调整规则,例如:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$
RewriteRule uk(.*) http://www.domain.co.uk/uk$1 [L,R=301]
编辑:我希望这将根据您的编辑对您有用。
第一条规则将http://www.domain.com/uk 和http://www.domain.com/uk/anything 重写为http://www.domain.co.uk/uk/anything。
第二条规则将http://www.domain.co.uk 重写为http://www.domain.co.uk/uk/。
编辑 2: 我更改了规则(修改了最后一条并添加了另一条)以反映对 .co.uk/something 的重写需求。如果路径以uk/ 开头,那么它只是通过,否则它会被重写为uk/something。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteRule uk($|/.*) http://www.domain.co.uk/uk$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.co\.uk$ [NC]
RewriteRule ^uk/(.*) - [PT,L]
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.co\.uk$ [NC]
RewriteRule (.*) http://www.domain.co.uk/uk/$1 [L,R=301]