基于CNAME的Apache虚拟主机

基于CNAME的Apache虚拟主机

我可以在 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>

apache 启动正常,并消化了我的配置,但当我访问 foo.example.com 时,我得到的是 /var/www 中的内容,而不是 /foo/www 中的内容。我想我走错了路。

答案1

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

NameVirtualHost *:80

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

<VirtualHost *:80>
 ServerName foo.example.com
 DocumentRoot /foo/wwww
</VirtualHost>

请务必阅读基于名称的虚拟主机支持去理解为什么它一开始就不起作用。

答案2

我让它像这样工作:

NameVirtualHost _default_:80

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

<VirtualHost _default_:80>
 ServerName foo.example.com
 DocumentRoot /foo/wwww
</VirtualHost>

尽管这在 http 启动时给出了警告:

[warn] NameVirtualHost _default_:80 has no VirtualHosts

答案3

您是否尝试在 foo.example.com vhost 上添加端口号?

IE:

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

相关内容