Назад | Перейти на главную страницу

Как выдать ошибку 404 при http-запросе на ip-адрес

У меня довольно простой вопрос. Пожалуйста, проявите ко мне терпение.

Например, скажем, я размещаю «www.example.com» и «www.another-example.com» на одном сервере с IP-адресом «1.2.3.4».

Вот типичная конфигурация apache:

Listen 80
NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.example.com
# Other directives here
</VirtualHost>

<VirtualHost *:80>
ServerName www.another-example.com
# Other directives here
</VirtualHost>

Как мне вернуть код ошибки 404 для запроса к "http://1.2.3.4"без блокировки всех сайтов на сервере?

Не могли бы вы включить пример директивы конфигурации apache, которую я должен использовать?

Первое определение виртуального хоста будет использоваться как «ловушка для всех» в случае, если имя домена не известно Apache.

Я знаю 2 решения:

  1. Создать еще один <VirtualHost> указывает на пустую папку и делает ее перечисленной выше всех других определений виртуальных хостов.

  2. Используя mod_rewrite, создайте правило на первом виртуальном хосте для возврата ответа 404, если %{HTTP_HOST} это IP-адрес.

Подход №1 более логичен и широко используется. Подход №2 я бы не использовал, если только не при определенных обстоятельствах.

Первый определенный виртуальный хост будет отвечать на запросы по голому IP-адресу. Вы также можете просто включить именованный виртуальный хост для самого IP-адреса и указать его на каталог с тем, что вы хотите вернуть.