将www.domain.com/uk重定向至www.domain.co.uk/uk

时间:2011-06-01 21:39:31

标签: apache .htaccess mod-rewrite internationalization dns

我不是.htaccess专家,但我尝试了一些不同的方法来重定向域无效。

我有一个英国和美国域名......一些美国网页有英文版本,需要指向正确的英国域名:

www.domain.com/uk需要重写为www.domain.co.uk/uk

实施例。如果有人输入www.domain.com/uk/about,则会将其重写为www.domain.co.uk/uk/about

修改:应重写/uk的路径

因此www.domain.com/ukwww.domain.co.uk应重写为www.domain.co.uk/uk/

1 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

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

重要的是使用适用于HTTP Host标头的RewriteCond ition。简单来说,如果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/ukhttp://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]