Если у вас только 1 IP на сервере:
<VirtualHost *:80>
(== Любой, порт 80) будет сопоставлять запросы с http://IP <VirtualHost XXX.XXX.XXX.XXX:443>
будет сопоставлять запросы с http://XXX.XXX.XXX.XXX - Но если XXX.XXX.XXX.XXX = = IP, то здесь возникает проблема.
Еслиоба домена находятся на одном и том же IP, запросы к порту: 443 будет восприниматься Apache как переход к единственному <VirtualHost>
, который соответствует XXX.XXX.XXX.XXX:443, независимо от имени домена.Соответствие <VirtualHost>
и согласование сертификата происходит за до доменного имени.
И даже если их много, Apache возьмет первое (сверху вниз), найденное в конфигурациипоскольку SSL-квитирование выполняется до того, как будет выполнено запрос имени домена.
Если у вас 2 IP-адреса на сервере
Настройте отдельный IP-адрес для ваших доменов.Разделение по IP позволяет Apache знать, какой сайт вам нужен.Итак:
<VirtualHost IP1:80>
ServerName website1.nl
[...]
</VirtualHost>
<VirtualHost IP2:443>
ServerName website2.nl
[...]
</Virtualhost>
Таким образом, Apache просто отклонит запрос к http s : // IP1 /, поскольку VirtualHost не совпадает.Но настройка второго IP-адреса не всегда возможна.
Частичное решение
Здесь я использую вашу настройку <VirtualHost>
.Так что
<VirtualHost IP1:80>
ServerName website1.nl
[...]
</VirtualHost>
<VirtualHost XXX.XXX.XXX.XXX:443>
ServerName website2.nl
[...]
</VirtualHost>
where XXX.XXX.XXX.XXX == IP1
Вы можете установить RewriteRule в *: 443 <VirtualHost>
, который говорит, что перенаправить запросы для website1.nl обратно на IP1: 80.
RewriteCond %{HTTP_HOST} website1.nl
RewriteRule (.*) http://IP1:80/$1
Одна проблема сДело в том, что ваш SSL-сертификат, скорее всего, настроен для website2.nl, поэтому браузер заметит, что запрашиваемое имя домена - website1.nl, и поэтому не соответствует сертификату.Вот почему это частичное решение.Вы можете настроить сертификат для обоих доменов, что устранит эту проблему, зависит от уровня контроля над созданием сертификата (полная гибкость или нет).