![众所周知,即使命名虚拟主机仅存在 beta.foo.com,apache 也会解析 foo.com?](https://linux22.com/image/800098/%E4%BC%97%E6%89%80%E5%91%A8%E7%9F%A5%EF%BC%8C%E5%8D%B3%E4%BD%BF%E5%91%BD%E5%90%8D%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E4%BB%85%E5%AD%98%E5%9C%A8%20beta.foo.com%EF%BC%8Capache%20%E4%B9%9F%E4%BC%9A%E8%A7%A3%E6%9E%90%20foo.com%EF%BC%9F.png)
我唯一拥有的虚拟主机是:
<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。