@Ferris

Как сделать редирект в .htaccess с нескольких доменов и поддоменов на соответствующие домен/поддомены?

Возникла необходимость достаточно нестандартного (для меня) 301 редиректа доменов в .htaccess. В случае, когда идет переадресация с нескольких доменов (например, domain1.ru, sub1.domain2.ru, sub2.domain1.ru) на определенный домен domain.ru с сохранением адреса необходимой страницы я использую вот такой код:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_HOST} !^domain\.ru$ [NC]
  RewriteRule ^(.*)$ http://domain.ru/$1 [L,R=301]
</IfModule>

Но теперь мне надо переадресовывать:
sub1.domain1.ru на sub1.domain.ru
sub1.domain2.ru на sub1.domain.ru
sub3.domain4.ru на sub3.domain.ru
sub1.domain1.ru/section/index.php?test=test на sub1.domain.ru/section/index.php?test=test
и так далее...

Говоря по-русски, мне надо брать поддомен (если есть) и перекидывать на такой же поддомен но в рамках основного домена, а если поддомена нет, то перекидывать просто на главный поддомен, сохраняя адрес страницы после домена/поддомена, если была запрошена определенная страница.
  • Вопрос задан
  • 2039 просмотров
Решения вопроса 1
@Ferris Автор вопроса
Почитал про регулярные выражения в htaccess и пришел вот к такому решению, может кому-то еще пригодится:

RewriteCond %{HTTP_HOST} !^domain.ru$|^(.*\.)domain\.ru$
RewriteCond %{HTTP_HOST} ^(.*\.)?(.*\.).*\..*$|^(.*).(.*)$
RewriteRule ^(.*)$ http://%2domain\.ru/$1 [L,R=301]

То есть будут перенаправлены все домены и поддомены не относящиеся к domain.ru. Поддомены перенаправятся на соответствующий поддомен у domain.ru, а домены второго уровня на основной - domain.ru. Адрес запрошенной страницы также передается.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
orlov0562
@orlov0562
I'm cool!
Примерно так (не проверял)
RewriteCond %{HTTP_HOST} !([^\.]+)\.domain\.ru$
RewriteRule ^(.*)$ http://%1.domain.ru/$1 [R=301,L]

Смысл в том, что используешь захват поддомена в RewriteCond, то что захватил можно выводить через %1 - %9
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы