基于Apache名称的虚拟主机中的ServerName通配符?

在我们的局域网上,我在DNS服务器上设置了几个“假”顶级域名(TLD),目的是将它们用于基于Apache名称的虚拟主机。 我想在Ubuntu 10.04 LAMP服务器上将它与大容量虚拟主机(即VirtualDocumentRoot)结合起来。

但是,我不能得到它select正确的虚拟主机!

以下是Apacheconfiguration的摘要:

NameVirtualHost 10.10.0.205 <VirtualHost 10.10.0.205> ServerName *.test VirtualDocumentRoot /var/www/%-3.0.%-2/test/%1/ CustomLog /var/log/apache2/access.log vhost_combined </VirtualHost> <VirtualHost 10.10.0.205> ServerName *.dev VirtualDocumentRoot /var/www/%-3.0.%-2/dev/%1/ CustomLog /var/log/apache2/access.log vhost_combined </VirtualHost> 

诸如www.domain.com.dev这样的主机名正确地parsing为10.10.0.205,但是总是select顶部虚拟主机,而不是底部虚拟主机,这更密切地匹配。

我之前的印象是,Apache会首先尝试匹配ServerName,然后默认为给定IP的顶级虚拟主机。 我究竟做错了什么? 或者这是不可能的,我必须为每个TLD使用另一个IP?

apachectl -S输出(修剪):

 10.10.0.205:* is a NameVirtualHost default server *.test port * namevhost *.test port * namevhost *.dev 

单独使用ServerAlias ,而不是ServerName

ServerName somename.dev

ServerAlias *.dev

如果这可以帮助,只需要完成一下莫的答案:

ServerAlias中的通配符也适用于部分域名,例如

ServerName somename.dev

ServerAlias *-mysite.dev

它最近拯救了我的生命^^(一个主站点,每个子应用程序的子域名,如admin-somename.devbo-somename.devapi-somename.dev …)