Что делать, если необходимо организовать редирект на версию сайта с HTTPS протоколом, когда ваш сервер принимает запросы не напрямую, а находясь за прокси сервером (например после nginx).
Проблема в том, что порт, с которым работает веб сервер, уже не будет отличаться при обращении пользователя как по 80му (http) так и по 443 (https) порту, так как сначала запрос попадает на прокси сервер.
Так сложилось, что общая практика сформировала типичные правила поведения прокси, который должен установить заголовок X-Forwarded-Proto, где указывается протокол соединения, использованный пользователем.
Если заголовок установлен, то добавьте следующие директивы в корневой .htaccess:
1 2 3 4 5 6 7 |
# HTTP to HTTPS <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://WWW.MYSITE.NET/$1 [R=301,L] </IfModule> |
Не забудьте заменить WWW.MYSITE.NET на домен вашего сайта.
Если ваш сайт переезжает с http на https, то, возможно, полезным для вас окажется — план действий.