基于CNAME的Apache虚拟主机

acc*_*min 3 domain-name-system linux virtualhost apache-2.2

我可以在 apache 上创建一个 vhost 来响应 cname 请求吗?例如:

example.com 的 A 记录是 1.2.3.4
foo.example.com 是 example.com 的 CNAME

在 http.conf 中:

<VirtualHost *:80>
 ServerName example.com
 DocumentRoot /var/www
</VirtualHost>

<VirtualHost foo.example.com>
 ServerName foo.example.com
 DocumentRoot /foo/www
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

apache 启动良好并消化了我的 conf,但是当我访问 foo.example.com 时,我得到了 /var/www 中的内容,而不是 /foo/www 中的内容。我想我在这里走错了路。

jos*_*chi 5

以下代码段应该可以工作(没有任何警告):

NameVirtualHost *:80

<VirtualHost *:80>
  ServerName example.com
  DocumentRoot /var/www
</VirtualHost>

<VirtualHost *:80>
 ServerName foo.example.com
 DocumentRoot /foo/wwww
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

请务必阅读有关Name-based Virtual Host Support的文档,以了解为什么它首先不起作用。

  • 对于那些阅读数百个论坛帖子和来自 Google 搜索的不相关结果的访问者可能会目瞪口呆:关键部分是包含@joschi 在上面的片段中包含的“NameVirtualHost”指令。如果没有 NameVirtualHost 指令,基于名称的虚拟主机将无法工作。 (4认同)