Как принудительно использовать HTTPS с помощью .htaccess

Если вы установили сертификат SSL для своего домена, следующим шагом должна быть настройка приложения для обслуживания всего веб-трафика через HTTPS.

В отличие от HTTP, где запросы и ответы отправляются и возвращаются в виде открытого текста, HTTPS использует TLS / SSL для шифрования связи между клиентом и сервером.

Использование HTTPS по сравнению с HTTP дает несколько преимуществ, например:

  • Все данные зашифрованы в обоих направлениях. В результате конфиденциальная информация не может быть прочитана в случае перехвата.
  • Chrome, Firefox и все другие популярные браузеры помечают ваш сайт как безопасный.
  • HTTPS позволяет использовать протокол HTTP / 2, что значительно повышает производительность сайта.
  • Google отдает предпочтение HTTPS-сайтам. Ваш сайт будет лучше ранжироваться, если обслуживается через HTTPS.

Перенаправление может быть установлено на уровне приложения или сервера. В этой статье объясняется, как перенаправить HTTP-трафик на HTTPS с помощью файла .htaccess .

Если у вас есть root-доступ по SSH к серверу Linux, на котором работает Apache, предпочтительным способом является настройка перенаправления в файле конфигурации виртуального хоста домена. В противном случае вы можете настроить перенаправление в файле .htaccess домена. Сервер Apache читает файл .htaccess при каждом запросе страницы, что замедляет работу веб-сервера.

Большинство панелей управления, например cPanel, позволяют принудительно перенаправлять HTTPS с помощью графического пользовательского интерфейса.

Перенаправить HTTP на HTTPS с помощью .htaccess

.htaccess — это файл конфигурации для каждого каталога веб-сервера Apache. Этот файл используется для определения того, как Apache обслуживает файлы из каталога, в котором он размещен, а также для включения / отключения дополнительных функций.

Как правило, файл .htaccess находится в корневом каталоге домена, но в подкаталогах могут быть и другие файлы .htaccess .

Вы можете отредактировать файл .htaccess (или создать новый) через SSH или FTP.

Чтобы перенаправить HTTP-запросы на HTTPS, откройте файл .htaccess и добавьте следующий код:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Вот что делает каждая строка кода:

  • RewriteEngine On — включает возможности перезаписи и позволяет нам использовать правила перезаписи.
  • RewriteCond %{HTTPS} off — Проверяет, имеет ли соединение тип HTTP-запроса. Когда условие выполнено, выполняется следующая строка. Мы хотим только перенаправлять HTTP-запросы. Если вы опустите это условие, вы получите цикл перенаправления.
  • RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] — перенаправить все HTTP-запросы на HTTPS с кодом статуса 301 (перемещен навсегда). Это правило перепишет http://example.com/about на http://example.com/about или http://www.example.com/about на https://www.example.com/about

Если в файле есть другие правила, добавьте код перезаписи вверху файла.

Это оно! После добавления этих строк сохраните файл и обновите страницу в браузере. Все HTTP-запросы должны быть перенаправлены на HTTPS.

При редактировании файла .htaccess вам не нужно перезапускать сервер, потому что Apache читает файл при каждом запросе.

Вот еще одно, более общее правило перенаправления с HTTP на HTTPS:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
  • HTTP_HOST — это имя хоста, которое посетитель запрашивает при доступе к сайту. Эта переменная представляет ваше доменное имя.
  • REQUEST_URI — это URI, который используется для доступа к странице.

Перенаправить HTTP на HTTPS и WWW на Non-WWW

Доступ к любому веб-сайту можно получить по двум URL-адресам: с префиксом www (например, www.example.com ) и без www (например, example.com). Большинство владельцев веб-сайтов выбирают одну версию в качестве предпочтительного домена и перенаправляют на нее.

Чтобы перенаправить с HTTP на HTTPS и с www на версию вашего сайта без www, добавьте следующие строки в файл .htaccess :

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

Здесь есть два условия. Первый проверяет, не является ли соединение HTTPS, а второй проверяет, начинается ли запрос с www . Если одно из условий верно (оператор [OR] ), правило перезаписи выполняется.

Перенаправить HTTP на HTTPS и без WWW на WWW

Если вы предпочитаете версию своего сайта с www, используйте следующее правило для перенаправления с HTTP на HTTPS и с не-www на www.

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

Выводы

Мы показали вам, как отредактировать файл .htaccess чтобы перенаправить весь HTTP-трафик на HTTPS.

Если у вас есть доступ к файлам конфигурации Apache, для повышения производительности вы должны принудительно использовать HTTPS, создав 301 редирект на виртуальном хосте домена.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Оставьте комментарий