У меня довольно простой вопрос. Пожалуйста, проявите ко мне терпение.
Например, скажем, я размещаю «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 решения:
Создать еще один <VirtualHost>
указывает на пустую папку и делает ее перечисленной выше всех других определений виртуальных хостов.
Используя mod_rewrite, создайте правило на первом виртуальном хосте для возврата ответа 404, если %{HTTP_HOST}
это IP-адрес.
Подход №1 более логичен и широко используется. Подход №2 я бы не использовал, если только не при определенных обстоятельствах.
Первый определенный виртуальный хост будет отвечать на запросы по голому IP-адресу. Вы также можете просто включить именованный виртуальный хост для самого IP-адреса и указать его на каталог с тем, что вы хотите вернуть.