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