![Apache 中的虚拟主机为 *.company.com,然后为 www.company.com 单独提供一个虚拟主机](https://linux22.com/image/492917/Apache%20%E4%B8%AD%E7%9A%84%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E4%B8%BA%20*.company.com%EF%BC%8C%E7%84%B6%E5%90%8E%E4%B8%BA%20www.company.com%20%E5%8D%95%E7%8B%AC%E6%8F%90%E4%BE%9B%E4%B8%80%E4%B8%AA%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA.png)
因此我为 www.company.com 设置了一个虚拟服务器:
<VirtualHost *:80>
ServerName www.company.com
</VirtualHost>
然后我想将 *.company.com 指向另一个站点。我该怎么做?我可以想到 www. 和 inside. 指向特定的虚拟主机,而“其余”指向通用虚拟主机。
Apache 版本是 2.2.4
答案1
您的答案中的解决方案:
<VirtualHost *:80>
ServerName www.company.com
ServerAlias company.com
DocumentRoot /path1
</VirtualHost>
<VirtualHost *:80>
ServerName *.company.com
DocumentRoot /path2
</VirtualHost>
礼貌地使用通配符“捕获所有”域名:
<VirtualHost *:80>
ServerName subdomain1.company.com
DocumentRoot /path/to/subdomain1
</VirtualHost>
<VirtualHost *:80>
ServerName subdomain2.company.com
DocumentRoot /path/to/subdomain2
</VirtualHost>
<VirtualHost *:80>
ServerName company.com
ServerAlias *.company.com
DocumentRoot /path/to/primary/domain+catchall
</VirtualHost>
请注意,顺序是有意义的,catchall 域必须是最后一个。这特别有用,可以避免客户端 URL 中的错误输入引发“不存在的主机”错误,让您公司的客户认为您是一个糟糕的服务器管理员(而不是他是一个糟糕的打字员 :P)。