Перенаправить HTTP на HTTPS
*Предпочтительным способом является настройка перенаправления в файле конфигурации виртуального хоста домена. Сервер Apache считывает .htaccess файл при каждом запросе страницы, что замедляет работу веб-сервера.
.htaccess
представляет собой файл конфигурации для каждого каталога для веб-сервера Apache. Этот файл используется для определения того, как Apache обслуживает файлы из каталога, в котором он находится, а также для включения/отключения дополнительных функций.
Чтобы перенаправить 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
наhttps://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]
https://linuxize.com/post/redirect-http-to-https-in-apache/#redirect-http-to-https-using-virtual-host