我唯一拥有的虚拟主机是:
<VirtualHost *:80>
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
# etc...
</VirtualHost>
和
<VirtualHost xx.xx.xx.xx:80>
DocumentRoot /var/www/vhosts/beta.foo.com/htdocs
ServerName beta.foo.com
<Directory /var/www/vhosts/www.foo.com/htdocs/>
Options All -MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/www/vhosts/www.foo.com/logs/error.log
LogLevel debug
CustomLog /var/www/vhosts/www.foo.com/logs/access.log combined
</VirtualHost>
beta.foo.com
是完全可以实现的,而且这也是预期的行为。
但是当我尝试获取时www.foo.com
,它解析为beta.foo.com
而不是配置default
。
这是 Apache 规则吗?
有办法避免这种情况吗?
唯一的方法是使用 ServerName 设置虚拟主机www.foo.com
?
答案1
文档解释道如何选择虚拟主机。基本上,您的beta.foo.com
主机之所以被选中是因为它有一个特定的 IP 地址,而默认主机使用通配符。要么将您的beta.foo.com
块更改为也使用通配符,要么将您的默认主机更改为使用特定的 IP。