
Если вы установили 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 на не-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 на виртуальном хосте домена.
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства
- Защитите Apache с помощью Let's Encrypt в Ubuntu 20.04
- Как настроить виртуальные хосты Apache в Ubuntu 20.04
- Как установить Apache в Ubuntu 20.04
- Как настроить виртуальные хосты Apache в Debian 10
- Как настроить виртуальные хосты Apache на CentOS 8
- Как установить и настроить Redmine на CentOS 8
- Как установить и настроить ownCloud на CentOS 8