Если вы установили 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.ru/about в https://example.ru/about или http://www.example.ru/about на https://www.example.ru/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.ru ) и без www (например, example.ru). Большинство владельцев сайтов выбирают одну версию в качестве предпочтительного домена и перенаправляют на него.
Чтобы перенаправить с HTTP на HTTPS и с www на версию сайта без www, добавьте в файл .htaccess следующие строки :
RewriteEngine On RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} ^www\.example\.ru [NC] RewriteRule ^(.*)$ https://example.ru/$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\.ru [NC] RewriteRule ^(.*)$ https://www.example.ru/$1 [R=301,L]
Вывод
Мы показали вам, как редактировать файл .htaccess, чтобы перенаправить весь HTTP-трафик на HTTPS.
Если у вас есть доступ к файлам конфигурации Apache, для повышения производительности вы должны принудительно установить HTTPS, создав перенаправление 301 на виртуальном хосте домена.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.