Введение
Если вы установили SSL-сертификат для своего домена, следующим шагом должна быть настройка приложения для обслуживания всего веб-трафика через HTTPS.
В отличие от HTTP, где запросы и ответы отправляются и возвращаются в виде обычного текста, HTTPS использует TLS/SSL для шифрования связи между клиентом и сервером.
Преимущества использования HTTPS вместо HTTP многочисленны:
- Все данные шифруются в обоих направлениях. В результате конфиденциальная информация не может быть прочитана в случае перехвата.
- Chrome, Firefox и все другие популярные браузеры пометят ваш сайт как безопасный.
- HTTPS позволяет использовать протокол HTTP/2, что значительно повышает производительность сайта.
- Google предпочитает веб-сайты HTTPS. Ваш сайт будет лучше ранжироваться, если будет предлагаться через HTTPS.
Перенаправление может быть установлено на уровне приложения или сервера. В этой статье объясняется, как перенаправить HTTP-трафик через HTTPS с помощью файла .htaccess
.
Если у вас есть корневой доступ 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 на не-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 на виртуальном хосте домена.