我的开发机器(Ubuntu 11.04)在apache2上有许多rails应用程序站点。 其中一个站点configuration是这样的。
<VirtualHost 192.168.1.7:80> DocumentRoot /home/ssk/dev/base3/sam/public ServerName base3.sam.codepremise.com RailsEnv development <directory /home/ssk/dev/base3/sam/public> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all </directory> </VirtualHost>
在同一台机器上还有许多其他类似的网站。 我对修复IP感到不安。 所以我改变了其中一个网站,如下所示。
<VirtualHost *:80> DocumentRoot /home/ssk/dev/base3/sam/public ServerName base3.sam.codepremise.com RailsEnv development <directory /home/ssk/dev/base3/sam/public> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all </directory> </VirtualHost>
我重新启动了Apache。 但是,该网站不工作,而是当我从浏览器请求时,其他网站出现。
为什么通配符不起作用?
如果您有多个主机设置为侦听相同的IP和端口,并且您只将此configuration更改为*:80 ,则其中一个主机可能优先。 这听起来像你正在尝试使用基于名称的虚拟主机(即httpd为每个ServerName提供不同的内容,如浏览器所要求的那样),但是你的configuration中可能会缺less一行:
NameVirtualHost *:80
阅读基于名称的虚拟主机的说明 ,如果听起来像你想要的,那么你可能只需要添加该行,并将所有VirtualHosts更改为*:80 。