你可以尝试这样的事情:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteRule (.*) http://www.domain.co.uk/$1 [L,R=301]
重要的一点是使用RewriteCond
工作在HTTP主机头上的ition。简单地说,如果在正常的RewriteRule
之前放置RewriteCond
,则只有在条件匹配时才使用该规则。
上面的代码摘录重定向从.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]
您的回答也需要考虑只有以'/ uk'开头的路径才应该被重定向。 – Greg 2011-06-01 22:16:38
在我看来,最初的问题并不清楚是否应该只重定向路径或文件。它主要是关于域名重定向,但是 - 确保 - 仅路径重定向也应该是可能的(使用不同的规则)。 – jCoder 2011-06-01 22:36:52
我已经为我的帖子添加了一个编辑,不知道是否澄清了任何内容。 /英国应该永远在英国页面 – 2011-06-01 22:51:24