У меня есть клиент, у которого есть домен вроде this-site.com
а также thissite.com
Не вдаваясь в суть проблемы, нам нужно перенаправить любой входящий запрос на любой *.this-site.com
к соответствию *.thissite.com
.
Так например:
subdomain1.this-site.com -> subdomain1.thissite.com
subdomain2.this-site.com -> subdomain2.thissite.com
subdomain3.this-site.com -> subdomain3.thissite.com
Есть ли способ сохранить первую часть URL-адреса и передать ее второму домену?
Предполагая, что все эти поддомены разрешаются в одно и то же место в файловой системе, тогда ... для перенаправления из this-site.com
к thisstite.com
сохраняя субдомен и оставшуюся часть URL-адреса (например, URL-путь и строку запроса), вы можете сделать что-то вроде следующего, используя mod_rewrite, в верхней части вашего .htaccess
файл в корне вашего сайта:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^.]+)\.this-site\.com [NC]
RewriteRule ^ https://%1.thissite.com%{REQUEST_URI} [R=302,L]
Я предположил HTTPS
. Это перенаправляет https://<subdomain>.this-site.com/<url-path>[?<query-string>]
к https://<subdomain>.thissite.com/<url-path>?<query-string>
.
В %1
это обратная ссылка на первую захваченную группу в последнем совпавшем CondPattern. Другими словами, это соответствует субдомен (([^.]+)
часть в предыдущем регулярном выражении) в запрошенном имени хоста.
Также обратите внимание:
www
.subsubdomain.subdomain1.thissite.com
не будет перенаправлен.this-site.com
.Это тоже временное (302) перенаправление. Если это предполагается навсегда, измените 302 на 301, но только после того, как вы подтвердите, что он работает нормально. (301-е файлы жестко кэшируются браузером, поэтому тестирование может быть проблематичным.)