В проекте apache2 любой http-запрос с неизвестным хостом будет направлен на первый загруженный VirtualHost. Есть ли способ отключить эту функцию? Иными словами, я хочу иметь веб-сервер, на котором пользователь может получить доступ только к явно названным определениям VirtualHost. Любое другое имя хоста, явно не упомянутое в строке ServerName или ServerAlias, должно игнорироваться.
Это возможно?
Listen 80
NameVirtualHost *
<VirtualHost _default_:*>
# Anything matching this host should be silently ignored.
</VirtualHost>
<VirtualHost *>
DocumentRoot /www/example1
ServerName www.example.com
</VirtualHost>
<VirtualHost *>
DocumentRoot /www/example2
ServerName www.example.org
</VirtualHost>
Обновление: как предлагается ниже и в других местах, игнорирование запроса может быть плохой идеей и, возможно, нарушает RFC для HTTP. Тем не менее, поскольку виртуальные хосты предназначены для имитации нескольких отдельных физических HTTP-серверов, подход игнорирования без вывода сообщений не кажется мне необоснованным. Это будет то же самое, что виртуальный хостинг на базе IP и брандмауэр на некоторых IP-адресах (возможно, не для всех клиентов).
источник
RewriteRule . - [F]
Вот альтернативный способ, который не включает правила переписывания:
источник
<VirtualHost>
Поэтому это «значение по умолчанию» должно быть сначала определено в конфигурации сервера. Какой именно файл должен находиться в, зависит от вашей конфигурации. (Однако проблема «перенаправленных поддоменов» может быть не связана.)это сработало для меня
замените xxxx на ваш фактический ipv4, а ipv6
замените myactualservername.com реальным веб-сайтом, обслуживаемым машиной.
Я использую имя на основе виртуального хоста.
кредит на это решение идет на
https://serverfault.com/a/82309/459796
источник