众所周知,即使命名虚拟主机仅存在 beta.foo.com,apache 也会解析 foo.com?

众所周知,即使命名虚拟主机仅存在 beta.foo.com,apache 也会解析 foo.com?

我唯一拥有的虚拟主机是:

<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。

相关内容