我一直在思考这个问题,因为某种原因,Apache 拒绝正确实现 https 重定向。我尝试过使用永久重定向以及 mod 重写和介于两者之间的所有方法。目前我只有一个虚拟主机文件,因为我试图删除任何不必要的卷积。我检查了 Apache 配置的状态,它显示正在使用有问题的虚拟主机文件。
我正在尝试续订 lets encrypt 证书,但无法续订,因为它通过 http 访问网站。每当我尝试通过 http 访问我的网站时,它都会出现 400 错误,指出它无法使用端口 443 提供 http 网站。因此,基本上 Apache 会将 http 端口 80 流量重定向到端口 443,但无论我如何尝试,它都不会将 http 重定向到 https。
<IfModule mod_ssl.c>
<VirtualHost *:80>
ServerName mysite.net
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(/(.*))?$ https://%{HTTP_HOST}/$1 [R=301,L]
</VirtualHost>
<VirtualHost *:443
ServerName mysite.net
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(/(.*))?$ https://%{HTTP_HOST}/$1 [R=301,L]
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/
SSLEngine on
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /etc/letsencrypt/live/mysite.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mysite.net/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
答案1
我明白了,我真是个大傻瓜 XD。在我的路由器中,服务器的端口 80 被转发到端口 443。