2011-06-01 156 views
2

我不是.htaccess专家,但我尝试了几个不同的事情来重定向域无济于事。重定向www.domain.com/uk到www.domain.co.uk/uk

我已经得到了英国和美国域名...美国的一些网页有英国扩展,并且需要指出正确的英国域名:

​​需要重写才能www.domain.co.uk/uk

防爆。如果有人类型www.domain.com/uk/about将被改写为www.domain.co.uk/uk/about

编辑:与/uk路径应该改写

所以​​和www.domain.co.uk应该重写www.domain.co.uk/uk/

回答

2

你可以尝试这样的事情:

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/ukhttp://www.domain.com/uk/anything重写为http://www.domain.co.uk/uk/anything

第二条规则重写http://www.domain.co.ukhttp://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] 
+0

您的回答也需要考虑只有以'/ uk'开头的路径才应该被重定向。 – Greg 2011-06-01 22:16:38

+0

在我看来,最初的问题并不清楚是否应该只重定向路径或文件。它主要是关于域名重定向,但是 - 确保 - 仅路径重定向也应该是可能的(使用不同的规则)。 – jCoder 2011-06-01 22:36:52

+0

我已经为我的帖子添加了一个编辑,不知道是否澄清了任何内容。 /英国应该永远在英国页面 – 2011-06-01 22:51:24