我们使用多个VirtualHost
条目在服务器上运行Apache。 每当有人通过IP地址( http://198.147.xx.xx
)访问服务器时,出现一个VirtualHost
网站。 这是不希望的。 如果IP直接访问,我们宁愿空白页面出现。 我不确定所select的站点是否是第一个出现在虚拟主机条目列表或什么内容的站点。
如果有人通过IP访问服务器,我们希望设置一个默认的空白页面。 我认为简单地为IP地址设置另一个VirtualHost
条目就可以做到这一点,而现在看来,访问任何其他VirtualHost
站点都会导致相同的空白默认页面。 这里是我们的configuration的一个例子:
<VirtualHost *:80> DocumentRoot /vhosts/somesite.com/public ServerName somesite.com <Directory "/vhosts/somesite.com/public"> allow from all Options +Indexes AllowOverride All </Directory> ServerAlias www.somesite.com </VirtualHost> <VirtualHost 198.147.XX.XX:80> DocumentRoot /vhosts/default/public <Directory /vhosts/default/public> allow from all Options +Indexes </Directory> </VirtualHost>
我们在这里做错了什么? 有没有更好的方法来设置通过IP地址访问服务器的任何人的默认login页面?
如果我没有记错的话,虚拟主机的行为就像这样:
httpd
search具有最具体限定符的虚拟主机。 (如果已经声明了NameVirtualHost
,则为IP地址或主机头) Host
头的情况下获得服务。 (即通过IP地址) 现在遇到的问题是,基于IP的虚拟主机比您的全部默认虚拟主机更具体(至less在Host
头与ServerName
或ServerAlias
不匹配时)。 为了获得你正在寻找的行为,我认为你需要这样做:
somesite.com
虚拟主机,以便其ServerAlias
包含您不想访问默认虚拟主机的每个名称。 希望有人有一个解决scheme接近实现您想要的最终结果; 已经有一段时间了,我有兴趣从中学习。