.htaccess

Перенаправить 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