我有几个网站,都设置在http-vhosts.conf与他们各自的ServerName和DocumentRoot ,他们工作正常和丹迪。
但是,当我访问服务器的IP地址URL时,我得到了第一个虚拟主机中的文件,而不是从我期望的Apache服务器中获取http.conf文件的DocumentRoot 。
我如何configurationApache,以便通过IP地址访问服务器,无论是外部还是环回,都不会返回第一个VirtualHost?
这里是第一个VirtualHost,如果我通过IP访问Web服务器,我现在正在回应这个响应:
<VirtualHost *:80> ServerName "delaneatallent.com" ServerAlias "www.delaneatallent.com" DocumentRoot "/Library/WebServer/Documents/delanea" </VirtualHost>
如果在OS X上使用Apache 2.2.14,那很重要。
:WQ
总之,你不能 – 这就是Apache的工作原理。 如果您正在监听该IP(按照Prix的评论),则Apache将使用提供IP请求时定义的第一个虚拟主机。
如果这是不可取的,那么考虑将第一台虚拟主机改为您实际上想要的IP地址。 如果这不是你想要的,那么可以考虑把redirect作为第一个虚拟主机,让它到达你想要的地方。
# default <VirtualHost *:80> RewriteEngine on RewriteRule ^/(.*) http://othersite.com/$1 [L,R] </VirtualHost>
你不能阻止Apache聆听这个IP,但是你可以让它做一些别的事情,只要你有一点创造力就可以做你想做的事情。
我所做的补救措施是为/var/www执行一个默认页面,并且当您通过IP或与我的服务器上的站点相关的未知url导航到我的服务器时,它会提供默认网站。
我托pipe的实际站点位于具有默认站点configuration的站点已启用文件夹中,并且都是基于名称的,并指向不同的目录。
长话短说,通过它的IP导航到我的服务器,你会得到默认的错误页面。
为了让你的apache监听特定的ip和端口,你必须定义它:
Listen 10.0.0.1:80 Listen 20.0.0.1:80
其中20.0.0.1和10.0.0.1是我已经分配给它的2个示例ips。
如果您已经configuration了另一个Listen ,则可能需要对其进行更改,例如:
Listen 0.0.0.0:80
会让你的Apache听所有可用的接口。