我不是.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/uk
和www.domain.co.uk
应重写为www.domain.co.uk/uk/
答案 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/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]