如何对 IP 地址的 http 请求给出 404 错误

如何对 IP 地址的 http 请求给出 404 错误

我有一个相当基本的问题。请耐心等待。

举例来说,假设我在一台服务器上托管“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 配置指令的示例?

答案1

如果 Apache 不知道域名,则第一个虚拟主机定义将用作“全部捕获”。

我知道两个解决方案:

  1. 创建一个<VirtualHost>指向空文件夹并使其列在所有其他虚拟主机定义之上。

  2. %{HTTP_HOST}使用 mod_rewrite 在第一个虚拟主机中创建一个规则,如果是 IP 地址则返回 404 响应。

方法 1 更合乎逻辑,应用也更广泛。除非在某些特殊情况下,否则我不会使用方法 2。

答案2

第一个定义的虚拟主机将回答针对裸 IP 地址的查询。您还可以只为 IP 地址本身包含一个命名的虚拟主机,并将其指向包含您想要返回的任何内容的目录。

相关内容