Чтобы ваш сайт всегда открывался по безопасному https:// протоколу,
рекомендуется настроить переадресацию c http:// на https://.
В этом случае даже если посетитель вашего сайта наберёт в строке браузера путь http://вашсайт,
браузер его автоматически перенаправит на безопасный протокол https://вашсайт.
Для настройки переадресации необходимо добавить в файл .htaccess правила, которые вы найдёте ниже.
Файл .htaccess должен быть расположен в каталоге сайта.
Если файла не существует, просто создайте его.
Перейдите в каталог сайта и добавьте в файл .htaccess следующие строки:
Редирект всех страниц с http:// на https://
Вариант 1.
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Если первый вариант не поможет, воспользуйтесь вторым вариантом:
Вариант 2.
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Вариант 3.
RewriteEngine On
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Если все варианты не помогли и возникает циклическая переадресация:
Испробуйте Вариант 4.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Редирект на https только определённой страницы
В примерах ниже редирект настраивается для страницы admin.php.
Вариант 1.
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} =/admin.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Вариант 2.
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} =/admin.php
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
Редирект на https всех страниц, кроме одной
В примере ниже редирект настраивается для страницы main.php
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} !^/main.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Плюшки
Браузер проводит проверку наличия SSL-сертификата раньше, чем срабатывает редирект. Таким образом, если у вас нет активного SSL-сертификата, выпущенного удостоверяющим центром, посетители сайта будут видеть предупреждение браузера о незащищённом контенте раньше, чем сработает редирект.
RewriteEngine On
RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
вместо site.ru введите имя вашего домена;