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

Перезапись Apache: sub.DOM1.TLD1 / путь> sub.DOM2.TLD2 / путь

... ответ MAYBE-dup действительно решает мою проблему, но вопрос - нет.

Сделайте ДВЕ вещи:

  1. Сохранить поддомен раньше

  2. Продолжить путь после

Я не могу найти ОДИН .htaccess или конфигурация Apache, которая делает ОБА в любом месте SE или в другом месте в Интернете:

Через Apache .htaccess переписать, перенаправить старый домен, но оставить ОБЕИХ тот же самый subdomain И path/after.

Из:

samesubdomain.domain1.tld1/same/path

Кому:

samesubdomain.domain2.tld2/same/path

У меня много поддоменов И конечных адресов. Я переношу старый сайт, но мои старые подписки и их страницы должны работать в новом домене.


Не-но-близкие дубликаты: (Ответы касаются моей проблемы, но сам вопрос не описывает мою проблему, но это также решило мою проблему.)

Перенаправить поддомен с подстановочными знаками на тот же поддомен в другом домене


Любезно предоставлено МОЖЕТ БЫТЬ-дублированный ответдля поддомена у меня в настоящее время есть:

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

... теперь мне нужно добавить the/path половина БЕЗ конфликтов с этим кодом.

Хотя связанный вопрос конкретно не заявляет об этом, код фактически копирует URL-путь (и любую строку запроса). Хотя по общему признанию ответов нет в каком-либо объяснении.

Предположения:

  • Поддомен есть всегда. Итак, вы не хотите перенаправлять вершину домена. т.е. domain1.tld1 (без поддомена) не перенаправляет на domain2.tld2.

В верхней части вашего корня .htaccess файл:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^([^.]+)\.domain1\.tld1 [NC]
RewriteRule (.*) https://%1.domain2.tld2/$1 [R=302,L]

В RewriteCond Директива захватывает поддомен из запроса. В %1 обратная ссылка в RewriteRule замена - это обратная ссылка на захваченный поддомен (т.е. ([^.]+)).

В $1 обратная ссылка содержит URL-путь, захваченный RewriteRule шаблон, т.е. (.*).

Обратите внимание, что я специально пропустил завершающий $ (привязка конца строки) на CondPattern чтобы соответствовать полному доменному имени, оканчивающемуся точкой.

Любая строка запроса передается без изменений.

Обратите внимание, что в настоящее время это 302-е (временное) перенаправление. Всегда проверяйте с 302, чтобы избежать проблем с кешированием. Если вы ранее тестировали 301s, вам нужно будет очистить кеш браузера.

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

... теперь мне нужно добавить половину пути / БЕЗ конфликта с этим кодом.

Код уже содержит часть URL-пути. Вот что %{REQUEST_URI} часть находится в RewriteRule замена строка. В REQUEST_URI Переменная сервера содержит полный URL-путь. Это просто еще один способ сделать то же самое, что и выше - я использовал обратную ссылку $1 вместо. (Обратите внимание, что REQUEST_URI серверная переменная содержит префикс косой черты, тогда как использованная мной обратная ссылка не содержит, следовательно, разница в косых чертах в замена строка.)

В этом коде отсутствует обратная косая черта на буквальной точке в .com.

Обратите внимание, что это решение делает субдомен по желанию. Он перенаправит domain1.com (без поддомена) на domain2.com.