Apache 基于名称的虚拟主机(ServerAlias)

Apache 基于名称的虚拟主机(ServerAlias)

我目前正在查看有关虚拟主机的 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

相关内容