У меня есть конфигурация Apache2 с несколькими виртуальными хостами. Мой DNS настроен на прием *.<domain>.<tld>
на нескольких доменах. Все работает правильно, но если я иду к нему, something-random-here.example.com
я, кажется, получаю неверный выбранный VirtualHost (я предполагаю первый или последний, который он находит). Есть ли способ указать Apache использовать определенные правила, если ни одна из записей VirtualHost не соответствует домену или поддомену? Я бы предпочел вернуть 404.
12
ports.conf
. Это не сработало, потому что я пытался сопоставить *: 80, когда использовал <ip>: 80 на своих виртуальных хостах. Вместо этого мне пришлось создать отдельную запись по умолчанию для каждого IP, и теперь это работает.Подстановочный знак включает в себя файлы конфигурации вашего сайта:
Организуйте файлы conf вашего сайта так, чтобы они загружались в ожидаемом порядке. Пример...
01-httpd.conf
02-site1-httpd.conf
03-site2-httpd.conf
и т.д...
Apache прочитает их по порядку. Затем создайте тот, который будет всегда загружаться последним, чтобы перехватить любые несоответствующие виртуальные хосты и вернуть 404 вместо загрузки сайта по умолчанию.
99-Catchall-httpd.conf
Обязательно замените порты теми портами, которые слушает ваш httpd. Или, если у вас есть httpd, прослушивающий определенные интерфейсы, вам нужно вместо этого добавить ловушку для каждого интерфейса, например так:
Надеюсь это поможет. Я использую этот метод для загрузки сайтов в указанном мной порядке и предотвращаю непреднамеренную загрузку неожиданного сайта несопоставленными виртуальными хостами.
источник
Как уже
Moritz Both
упоминалось, Apache2 будет использовать первый виртуальный хост, который он найдет, если он не соответствует ни одному из запрошенных вами.Когда вы впервые устанавливаете Apache2, есть веб-сайт по умолчанию, который вы можете использовать в качестве шаблона, изменить или удалить, и мне всегда было интересно, для чего на самом деле был 000-default.conf, потому что у них тоже был default.conf. После прочтения
Moritz Both
сказанного все становится более понятным.Что я сделал для своего сервера, так это скопировал конфигурацию для имени хоста по умолчанию (веб-сайт) в файл 000-default.conf и
a2ensite 000-default
.Теперь, каждый раз, когда на мой веб-сайт поступает непревзойденный запрос домена, он обслуживает страницу с 000 по умолчанию, которая является просто копией моей настоящей страницы по умолчанию.
источник
<VirtualHost *:443> ... Redirect / https://baseurl/ ... </VirtualHost>
но URL остается прежним. Я сделал то же самое для не ssl-версии, и он перенаправляет правильно. Есть идеи?