Как перенаправить HTTP на HTTPS на Apache
Прежде чем вы сможете настроить перенаправление Apache HTTP на HTTPS для своего домена, убедитесь, что у вас установлен сертификат SSL, и в Apache включен mod_rewrite.
Перенаправление HTTP на HTTPS в Apache с использованием
файла .htaccess
Сначала убедитесь, что модуль mod_rewrite включен, в противном случае ОБЯЗАТЕЛЬНО включите его.
$ sudo a2enmod rewrite [Ubuntu/Debian]
Для пользователей CentOS/RHEL (!) Убедитесь, что у вас есть следующая строка в httpd.conf (поддержка mod_rewrite — включена по умолчанию).
LoadModule rewrite_module modules/mod_rewrite.so
Теперь вам просто нужно отредактировать или создать файл .htaccess в корневом каталоге вашего домена и добавить эти строки для перенаправления http на https.
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
Теперь, когда посетитель набирает http://www.yourdomain.com, сервер автоматически перенаправляет HTTPна HTTPS https://www.yourdomain.com.
Как перенаправить HTTP на HTTPS на виртуальный хост Apache
Кроме того, чтобы заставить весь веб-трафик использовать HTTPS, вы также можете настроить свой файл виртуального хоста. Существует два важных пункта, касающихся конфигурации виртуального хоста, если включен SSL-сертификат.
Первый содержит конфигурацию для незащищенного порта 80.
Второй — для безопасного порта 443. Для перенаправления HTTP на HTTPS для всех страниц вашего веб-сайта сначала откройте соответствующий файл виртуального хоста. Затем измените его, добавив конфигурацию, приведенную ниже.
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.yourdomain.com
Redirect / https://www.yourdomain.com/
</VirtualHost>
<VirtualHost _default_:443>
ServerName www.yourdomain.com
DocumentRoot /usr/local/apache2/htdocs
SSLEngine On
# etc...
</VirtualHost>
Сохраните и закройте файл, а затем перезапустите HTTP-сервер следующим образом.
$ sudo systemctl restart apache2 [Ubuntu/Debian]
$ sudo systemctl restart httpd [RHEL/CentOS]
<VirtualHost> является наиболее рекомендуемым решением, потому что он прост и безопасен.