我的开发机器(Ubuntu 11.04)在 apache2 上有许多 rails 应用站点。其中一个站点配置如下。
<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。但是当我从浏览器发出请求时,网站却无法工作,反而出现了其他网站。
为什么通配符不起作用?
答案1
如果您设置了多个主机来监听相同的 IP 和端口,并且您只将这一个主机的配置更改为*:80
,则其他主机之一可能优先。听起来您正在尝试使用基于名称的虚拟主机(即,httpd 根据浏览器的请求为每个 ServerName 提供不同的内容),但您的配置中可能缺少一行:
NameVirtualHost *:80
阅读基于名称的虚拟主机说明,如果这听起来像您想要的,那么您可能只需要添加该行,并将所有 VirtualHosts 更改为*:80
。