Неправильное https-перенаправление с двумя сайтами на одном сервере

Неправильное https-перенаправление с двумя сайтами на одном сервере

У меня есть два веб-сайта, назовем ихпример-1.comипример-2.comразвернуто на том же сервере (CentOS 7.5) оба обслуживаются Apache на порту 80. Перенаправление выполняется с помощью виртуальных хостов (полную конфигурацию см. ниже).

Для обоих сайтов я перенаправляю (навсегда)неhttp URL-адреса на https (проблем с сертификатами нет, бот работает нормально).

Проблема, с которой я столкнулся, заключается в том, что http-версия второго веб-сайта перенаправляет (перемещена навсегда, 301) на https-версию первого (порядок сайтов соответствует файлам .conf ниже).

Этого перенаправления не происходит, если второй сайт перенаправляет на первый (см. конфигурации ниже), также все работает как надо, если нет необходимости перенаправлять с http на https, т.е. я начинаю сhttps://www.example-2.com.

Вот.confфайлы, любые идеи о том, как это исправить, будут высоко оценены.

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>

и та же настройка для второго сайта. Это решило для меня проблему неправильного перенаправления.

Связанный контент