Я пытаюсь заставить свой личный веб-сайт перенаправлять не-https-запросы на https-версию сайта. Настройка виртуального хоста в моем файле httpd.conf:
Listen 443
<VirtualHost *:443>
ServerAdmin admin@my-website.com
DocumentRoot /var/www/html
ServerName www.my-website.com
ErrorLog /var/www/logs/error_log
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/my-website.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/my-website.com/privkey.pem
</VirtualHost>
работает совершенно нормально.
Однако, когда я пытаюсь настроить виртуальный хост для порта 80, вот так:
Listen 80
<VirtualHost *:80>
ServerAdmin admin@my-website.com
ServerName www.my-website.com
RewriteEngine On
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(/(.*))?$ https://%{HTTP_HOST}/$1 [R=301,L]
</VirtualHost>
Он полностью пропускается, и в конечном итоге файлы просто обслуживаются с главного сервера. Я делаю что-то не так в настройках?
Кроме того, происходит нечто, что меня совершенно сбивает с толку. Если я оставлю DocumentRoot таким же для основного сервера, но изменю его на какой-нибудь тестовый html для виртуального хоста порта 443, когда я перейду на http-версию веб-сайта, я увижу тестовый html, но сайт по-прежнему показывает небезопасное http-соединение , а не https-версия. Что может быть причиной этого?