Apache2 将 www 重定向到 https ...这让我试图弄清楚这一点

问题描述 投票:0回答:1

服务器 Ubuntu 22.04

apache2 -v 2.4.52

此问题的网站别名:example.com

我已经配置并启用了启用虚拟主机站点的 example.conf 文件,如下所示。 默认为禁用。 我的网站没有 .htaccess 文件。 当我在浏览器中访问 example.com 时,网站会启动并且 SSL 检查正常(挂锁)。 当我访问 http://example.com 时,网站启动并且 SSL 检查正常(挂锁)。 但是,当我访问 www.example.com 时,网站启动,但 SSL 失败(显示网站不安全,挂锁呈红色)。 我以为我在 example.conf 中正确设置了重定向,但我想我遗漏了一些东西。 请查看下面我的 .conf 文件并提出更改或故障排除方法的建议,以帮助我解决此问题。

<VirtualHost *:80 *:443>
    ServerName example.com
    ServerAlias www.example.com
    Redirect permanent / https://example.com/
    DocumentRoot /var/www/html/example
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
</VirtualHost>

<VirtualHost *:80 *:443>
    ServerName www.example.com
    Redirect permanent / https://example.com/
    DocumentRoot /var/www/html/example  
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem
</VirtualHost>
http-redirect apache2 virtualhost
1个回答
0
投票

问题:

  1. ssl 配置不正确
  2. 重复的虚拟主机

解决方案:

  1. 一个证书应该涵盖您的两个域,您可以通过以下命令获取它
sudo certbot --apache -d example.com -d www.example.com

  1. 简化您的 apache 配置
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/html/example
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
    
    # Ensure that www.example.com redirects to example.com
    <If "%{HTTP_HOST} == 'www.example.com'">
        Redirect permanent / https://example.com/
    </If>
</VirtualHost>

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.