... ответ MAYBE-dup действительно решает мою проблему, но вопрос - нет.
Сделайте ДВА вещи:
Сохранять субдомен до
Сохранять путь после
Я не могу найти ОДИН .htaccess
или конфигурацию Apache, которая выполняет ОБА в любом месте на SE или в другом месте в Интернете:
Через Apache .htaccess
перезаписать, перенаправить старый домен, но оставить ОБА на том же субдомене
И путь / после
.
От:
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]
... теперь мне нужно добавить половину / 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 , чтобы соответствовать FQDN , которые заканчиваются точкой.
Любая строка запроса передается без изменений.
Обратите внимание, что в настоящее время это 302 (временное) перенаправление. Всегда проверяйте с 302, чтобы избежать проблем с кешированием. Если вы ранее тестировали 301, вам необходимо очистить кеш браузера.
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
.