我正在尝试使用 Apache 服务器上的 httpd.conf 文件强制将所有 HTTP 流量重定向到 HTTPS。
预期行为:当用户访问http://example.com,他们应该被重定向到https://example.com/。
实际行为:当用户访问http://example.com,它们停留在同一链接,浏览器显示一条错误消息(无法访问此网站,http://example.com/拒绝连接)。
这是我的 httpd.conf 代码:
Listen 443
<VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerName "example.com"
ServerAlias "www.example.com"
Redirect permanent / "https://example.com/"
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</VirtualHost>
我还有一个 httpd-le-ssl.conf 文件,它定义了我的 HTTPS 端口的配置。HTTPS 链接工作正常,我已使用 certbot 安装了证书。
<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot "/var/www/html"
ServerName "example.com"
ServerAlias "www.example.com"
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
</IfModule>
我尝试过的:
- 尝试删除“永久重定向”并仅保留 httpd.conf 中的 RewriteEngine 规则
- 尝试删除 RewriteEngine 规则并仅保留 httpd.conf 中的“永久重定向”规则
- 尝试将两者都保存在我的文档根目录 /var/www/html 中的 .htaccess 文件中
- 尝试将两者都保存在 /var/www/ 中的 .htaccess 文件中
链接: