如何让 Apache 不响应仅 IP 请求?

ric*_*ent 5 mac-osx virtualhost apache-2.2

我有几个网站,都建立在http-vhosts.conf各自的ServerName和 中DocumentRoot,他们工作得很好,花花公子。

但是当我访问服务器的 IP 地址 URL 时,我取回了第一个虚拟主机中的文件,而不是 Apache 从我期望的位置提供http.conf文件的DocumentRoot.

如何配置Apache以便通过IP地址访问服务器,无论是外部还是环回,都不会返回第一个VirtualHost?

这是第一个 VirtualHost,如果我通过 IP 访问 Web 服务器,我目前将其作为响应返回:

<VirtualHost *:80>
    ServerName "delaneatallent.com"
    ServerAlias "www.delaneatallent.com"
    DocumentRoot "/Library/WebServer/Documents/delanea"
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

如果这很重要,请在 OS X 上使用 Apache 2.2.14。

:wq

小智 10

简而言之,您不能 - 这就是 Apache 的工作方式。如果您正在侦听该 IP(根据 Prix 的评论),那么 Apache 将使用在提供 IP 请求时定义的第一个虚拟主机。

如果这是不可取的,那么考虑将第一个虚拟主机更改为您实际想要通过 IP 提供服务的主机。如果这不是你想要的,那么考虑将重定向作为第一个虚拟主机,让它去你想要的地方。

# default
<VirtualHost *:80>
  RewriteEngine on
  RewriteRule ^/(.*) http://othersite.com/$1 [L,R]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

您无法阻止 Apache 侦听该 IP,但是您可以通过一点创造力让它做其他事情,做您想做的事情。