Вы можете попробовать что-то вроде этого:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteRule (.*) http://www.domain.co.uk/$1 [L,R=301]
Важным моментом является использование тега RewriteCond
, который работает с заголовком HTTP-хоста.Проще говоря, если RewriteCond
ставится перед нормальным RewriteRule
, то правило используется только в том случае, если условие соответствует.
Приведенный выше фрагмент кода перенаправляет все запросы с .COM
на .CO.UK
domain, так что если вам нужно только перенаправить определенный каталог, то вам необходимо соответствующим образом изменить правило, например:
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]