htaccess переписать все субдомены в URL-путь - PullRequest
0 голосов
/ 31 марта 2020

Мне нужно перенаправить все запросы, идущие к любому поддомену на domain1.com, на domain2.com, передавая часть поддоменов в виде пути, например:

sub1.domain1.com -> domain2.com/sub1

это работает с моим текущим правилом перезаписи:

RewriteCond %{HTTP_HOST} ^.+?\.domain1\.com$ [NC]

RewriteRule ^(.*)$ https://domain2.com/$1 [L,R=301]

, но когда у меня есть поддомен, подобный следующему, он не не работает:

sub1.sub2.domain1.com -> перенаправляет на domain2.com/ без указания частей субдомена по пути. (domain2.com/sub1.sub2)

как я могу заставить это работать для любой комбинации поддоменов?

1 Ответ

0 голосов
/ 31 марта 2020

Я не вижу, кто любой такое перенаправление в настоящее время работает. Правило переписывания, которое вы опубликовали, безусловно, делает , а не делает то, что вы описываете ...

Я предлагаю такой подход для передачи "имени субдомена":

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(?:(.+)\.)?domain1\.com$ [NC]
RewriteRule ^ https://domain2.com/%1 [L,R=301]

https://sub1.sub2.domain1.com/some/path => https://domain2.com/sub1.sub2

Это, очевидно, будет игнорировать любой изначально запрашиваемый путь, но это то, что вы намереваетесь, как я понял. Если вы также хотите сохранить путь и поставить перед ним только имя субдомена, то этот вариант должен указать вам правильное направление:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(?:(.+)\.)?domain1\.com$ [NC]
RewriteRule ^/?(.*)$ https://domain2.com/%1/$1 [L,R=301]

https://sub1.sub2.domain1.com/some/path = > https://domain2.com/sub1.sub2/some/path

Рекомендуется начать с перенаправления 302 и изменить его на 301 только тогда, когда все будет работать так, как нужно. Это предотвращает проблемы с кэшированием ...

...