Страницы

Поиск по вопросам

понедельник, 24 февраля 2020 г.

Как прописать редирект в .htaccess если изменился домен?

#htaccess #redirect #домен #mod_rewrite #поддомены


Есть старый сайт на поддомене, например 2015.site.ru

поменяли основной домен site.ru на 2015.site.moscow

теперь нужно чтобы все обращения к 2015.site.ru переадресовывались на 2015.site.moscow

И естественно, не только обращения только к инденсу домена, но и любые другие, например
чтобы http://2015.site.ru/images/pic.gif преобразовывался в http://2015.site.moscow/images/pic.gif

Однако при обращение к основному сайту site.ru не должно быть переадресации на site.moscow
Подскажите пожалуйста, как такое прописать в .htaccess?
    


Ответы

Ответ 1



просто классика. скопировано из ответа: rewriteengine on rewritecond %{HTTP_HOST} ^a\.example\.com rewriterule ^(.*)$ http://b.example.com/$1 [r,l] доп. информация: http://wiki.apache.org/httpd/WhenNotToUseRewrite

Ответ 2



Если ограничиваться только протоколом HTTP, то необходимый редирект можно записать, например, так: RewriteEngine On RewriteCond %{HTTP_HOST} ^2015\.site\.ru$ RewriteRule ^(.*)$ http://2015.site.moskow/$1 [R=301,L] Если надо таким же образом перенаправлять и протокол HTTPS, то правило будет немного посложнее: RewriteEngine On RewriteCond %{HTTP_HOST} ^2015\.site\.ru$ [NC] RewriteCond %{HTTPS} off RewriteRule ^(.*)$ http://2015.site.moskow/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^2015\.site\.ru$ [NC] RewriteCond %{HTTPS} on RewriteRule ^(.*)$ https://2015.site.moskow/$1 [R=301,L] Это правило понятно, но избыточно и сделано слишком прямолинейно. Можно его оптимизировать, убрав повторяющиеся элементы. В результате получится следующее: RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ - [env=protocol:http] RewriteCond %{HTTPS} on RewriteRule ^(.*)$ - [env=protocol:https] RewriteCond %{HTTP_HOST} ^2015\.site\.ru$ [NC] RewriteRule ^(.*)$ %{ENV:protocol}://2015.site.moskow/$1 [R=301,L] Интересно, что мне не удалось найти онлайн-тестер файла .htaccess, понимающий последний вариант. Но "живой" Apache обработал его корректно.

Комментариев нет:

Отправить комментарий