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

Htaccess Force HTTPS

Если вы установили 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 на виртуальном хосте домена.

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

апач

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *