В обычном состоянии сайт работает по не защищённом протоколу http. Чтобы обеспечить защищённое соединение и доступ сайта по протоколу https необходимо вначале установить SSL-сертификат в хостинг-панели. Но сама по себе установка SSL-сертификата не обеспечит постоянный доступ сайта по безопасному соединению. Нужно ещё настроить перенаправление (редирект) с http на https. После настройки, браузер начнёт автоматически перенаправлять посетителей сайта по защищённому протоколу.
Содержание:
- Редирект всех страниц с http на https
- Редирект на https только выбранной страницы
- Редирект на https всех страниц, кроме одной
Хотим обратить ваше внимание на то, что данный метод перенаправления подходит для Linux-серверов.
Также, если у вас на хостинге используется панель управления ISPmanager 5 или Plesk, переадресацию можно настроить средствами панели управления всего за пару кликов.
Настройка редиректа через .htaccess
- Войдите в панель управления хостингом.
- Откройте файл .htaccess, расположенный в корневой папке сайта.
- Добавьте в конец файла одно из правил, которое больше всего подходит.
- Сохраните файл.
1. Редирект всех страниц с http на https, в том числе с http://www на 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 %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Вариант 4
RewriteEngine On
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
2. Редирект на https только выбранной страницы
Вариант 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]
Для примера использовалась переадресация страницы admin.php.
3. Редирект на https всех страниц, кроме одной
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} !^/test.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Обратите внимание!
Если ни один из предложенных вариантов кода не подошел, то обратитесь к разработчикам сайта или на тематические форумы. В некоторых случаях корректная настройка редиректа возможна только средствами CMS.