Назад | Перейти на главную страницу

Перенаправление Apache htaccess?

У меня есть клиент, у которого есть домен вроде 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-е файлы жестко кэшируются браузером, поэтому тестирование может быть проблематичным.)