我目前正在查看有关虚拟主机的 apache 文档。它在此页面上提供了一个示例:http://httpd.apache.org/docs/2.0/vhosts/name-based.html
他们展示的例子是:
<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>
这种类型的配置也可以工作吗?:
<VirtualHost *:80>
ServerName *.domain.tld
DocumentRoot /www/domain
</VirtualHost>
或这个:
<VirtualHost *:80>
ServerName domain.tld
ServerAlias *.domain.tld
DocumentRoot /www/domain
</VirtualHost>
答案1
您不能使用通配符来指定 ServerName,因为它必须是完整限定域名 (FQDN)。您的第一个示例ServerName *.domain.tld
将不起作用,因为这不是 FQDN。您的第二个示例将起作用,并且是相当常见的配置。
需要注意的一点是,apache 按照定义顺序从上到下处理这些指令,并根据第一个匹配采取行动。
答案2
还请检查您的 NameVirtualHost 指令和文档 [通常在 apache 2.2 的 listen.conf 中]
我相信您的虚拟主机应该设置为:
NameVirtualHost *:80
但请再检查一下,http://httpd.apache.org/docs/2.0/mod/core.html#namevirtualhost