Вопрос: Как настроить виртуальный хост по умолчанию, чтобы вернуть заголовок 404 в apache?


Я знаю, что подобные вопросы заданы, но доступные ответы не очень ясны, поэтому, пожалуйста, несите меня.

После создания нескольких <VirtualHost>s в apache, я хотел бы настроить _default_ ServerName, чтобы он возвращал сообщение 404. I.e., если в HTTP-заголовке узла не указан какой-либо явно доступный домен, возвращаем 404. (В идеале это нечто более прямое, чем указание на несуществующий каталог.)

Любая помощь будет принята с благодарностью.


12
2018-02-04 23:20


Источник




Ответы:


Ты пробовал:

Переадресация 404 /
ErrorDocument 404 "Страница не найдена"

в VirtualHost по умолчанию?


25
2018-02-04 23:25



Спасибо, вот и все! Поскольку я понимаю, что мой низкий уровень знаний, я мог бы добавить для своих коллег-новичков, что сервер по умолчанию должен появиться первым. (Мне понадобилось время, чтобы разобраться!) - ezequiel-garzon
ПРИМЕЧАНИЕ. Если ErrorDocument указывает на файл или url внутри этого vhost, он также вернет 404, таким образом генерируя внутреннюю ошибку сервера. - Cyril N.
Этот ответ будет работать на сайтах, где все vhosts содержатся в одном файле (ответ Юджина Фиделина более полный). При использовании отдельных файлов .conf для каждого сайта с помощью a2ensite я не мог понять, как сначала загрузить конфигурацию по умолчанию (404). - Andrew Swift
Redirect 404 / достаточно, чтобы показать страницу Apache «Не найдена» по умолчанию, а также работает внутри определенного виртуального хоста (могут быть случаи, когда вы хотите вернуть 404 для всего сайта, чтобы он исчез из поисковых запросов Google) - lucaferrario


Вот пример 000-default.conf, который вернет ошибку 404, если имя сервера не настроено для Apache

<VirtualHost *:80>
  ServerName default
  Redirect 404 /
</VirtualHost>
<VirtualHost _default_:80>
  Redirect 404 /
</VirtualHost>

1
2017-10-27 15:01



Я могу подтвердить, что вторая часть работает, когда все vhosts настроены в одном файле (я положил его первым). - Andrew Swift
Возможно, лучше использовать 503 (Service Unavailable) вместо 404, но я сомневаюсь, что на практике это имеет большое значение, средства мониторинга обычно предупреждают о любых не-200 кодах. - Kris