Apache 将 HTTP 重定向到 HTTPS 不起作用

Apache 将 HTTP 重定向到 HTTPS 不起作用

我正在尝试使用 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>

我尝试过的:

  1. 尝试删除“永久重定向”并仅保留 httpd.conf 中的 RewriteEngine 规则
  2. 尝试删除 RewriteEngine 规则并仅保留 httpd.conf 中的“永久重定向”规则
  3. 尝试将两者都保存在我的文档根目录 /var/www/html 中的 .htaccess 文件中
  4. 尝试将两者都保存在 /var/www/ 中的 .htaccess 文件中

链接:

  1. 完整的 httpd.conf 源代码

相关内容