*.company.com 的 apache 虚拟主机,然后是 www.company.com 的单独主机

San*_*man 0 virtualhost server-settings apache-2.2

所以我为 www.company.com 设置了一个虚拟服务器:

<VirtualHost *:80>
    ServerName www.company.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

然后我想将 *.company.com 定向到另一个站点。我该怎么做?我可以想到www。和里面。被针对特定的虚拟主机,但“其余的”针对通用虚拟主机。

Apache 版本为 2.2.4

drA*_*erT 8

您的答案的解决方案

<VirtualHost *:80>
    ServerName www.company.com
    ServerAlias company.com
    DocumentRoot /path1
</VirtualHost>
<VirtualHost *:80>
    ServerName *.company.com
    DocumentRoot /path2
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

通配符的礼貌使用“捕获所有”域

<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>
Run Code Online (Sandbox Code Playgroud)

请注意,顺序是有意义的,catchall 域必须是最后一个。这对于避免在客户端 url 中输入错误引起“主机不存在”错误特别有用,让您公司的客户认为您是一个糟糕的服务器管理员(而不是他是一个糟糕的打字员:P)。