#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 обработал его корректно.
Комментариев нет:
Отправить комментарий