同一服务器上两个网站存在错误的 https 重定向

同一服务器上两个网站存在错误的 https 重定向

我有两个网站,叫它们example-1.comexample-2.com部署在同一台服务器上(CentOS 7.5) 均由 apache 在端口 80 提供服务。重定向是通过虚拟主机执行的(完整配置见下文)。

对于这两个网站,我都会(永久)重定向http url 转换为 https(证书没有问题,机器人运行良好)。

我遇到的问题是第二个网站的 http 版本重定向(永久移动,301)到第一个网站的 https(站点的顺序根据下面的 .conf 文件)。

当第二个网站重定向到第一个网站时,不会发生此重定向(请参阅下面的配置),如果不需要从 http 重定向到 https,则一切正常,即我从https://www.example-2.com

这里有配置文件文件,任何关于如何修复此问题的想法都将非常感激。

Listen 80

<VirtualHost *:80>
    ServerName example-1.com
    Redirect permanent / https://www.example-1.com/
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
    DocumentRoot "/var/www/html/example-1"
    ServerName www.example-1.com
    ServerAlias example-1.com

## logging
   ErrorLog "/var/log/httpd/example-1-error_log"
   CustomLog "/var/log/httpd/example-1-access_log" combined

        <Directory "/var/www/html/example-1">
                DirectoryIndex index.html index.php
                Options FollowSymLinks
                AllowOverride All
       </Directory>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example-1.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example-1.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example-1.com/chain.pem
</VirtualHost>
</IfModule>
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/css application/x-javascript text/x-component text/html text/plain text/xml application/javascript
</IfModule>

会议第二个网站(请注意,除了名称之外,唯一的区别是,在第二个网站上,我们没有听 80在顶部)

<VirtualHost *:80>
    ServerName example-2.com
    Redirect permanent / https://www.example-2.com/
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
    DocumentRoot "/var/www/html/example-2"
    ServerName www.example-2.com
    ServerAlias example-2.com

## logging
   ErrorLog "/var/log/httpd/example-2-home-error_log"
   CustomLog "/var/log/httpd/example-2-home-access_log" combined

        <Directory "/var/www/html/example-2">
                DirectoryIndex index.html index.php
                Options FollowSymLinks
                AllowOverride All
        </Directory>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example-2.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example-2.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example-2.com/chain.pem
</VirtualHost>
</IfModule>
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/css application/x-javascript text/x-component text/html text/plain text/xml application/javascript
</IfModule>

答案1

我想我终于找到了我的配置中的问题所在。我将其发布在这里,以防有人遇到类似的问题。

我将服务器名称改为 www 格式,并添加了不带 www 的服务器别名,也就是说,指令现在变成了

<VirtualHost *:80>
    ServerName www.example-1.com
    ServerAlias example-1.com
    Redirect permanent / https://www.example-1.com/
</VirtualHost>

对第二个网站也做了同样的调整。这帮我解决了错误的重定向问题。

相关内容