Редирект с http на https с помощью .htaccess

В обычном состоянии сайт работает по не защищённом протоколу http. Чтобы обеспечить защищённое соединение и доступ сайта по протоколу https необходимо вначале установить SSL-сертификат в хостинг-панели. Но сама по себе установка SSL-сертификата не обеспечит постоянный доступ сайта по безопасному соединению. Нужно ещё настроить перенаправление (редирект) с http на https. После настройки, браузер начнёт автоматически перенаправлять посетителей сайта по защищённому протоколу.

Содержание:

  1. Редирект всех страниц с http на https
  2. Редирект на https только выбранной страницы
  3. Редирект на https всех страниц, кроме одной

Хотим обратить ваше внимание на то, что данный метод перенаправления подходит для Linux-серверов.

Также, если у вас на хостинге используется панель управления ISPmanager 5 или Plesk, переадресацию можно настроить средствами панели управления всего за пару кликов.

Настройка редиректа через .htaccess

  1. Войдите в панель управления хостингом.
  2. Откройте файл .htaccess, расположенный в корневой папке сайта.
  3. Добавьте в конец файла одно из правил, которое больше всего подходит.
  4. Сохраните файл.

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.

Понравилось? Поделись этим с другими!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.