Если вы установили сертификат 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 редирект на виртуальном хосте домена.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.