我希望将所有子域的流量定向到一个目录,仅针对一个特定子域,再针对另一个目录。
<VirtualHost beta.home.lan:80>
ServerName beta.home.lan
DocumentRoot /var/www/beta
</VirtualHost>
<VirtualHost *:80>
ServerName beta.home.lan
DocumentRoot /var/www/others
</VirtualHost>
它接第一个虚拟服务捕获所有流量。 我做错了什么? 谢谢!
答案 0 :(得分:1)
http://httpd.apache.org/docs/2.2/en/mod/core.html#servername:
“如果您使用的是基于名称的虚拟主机,则部分内的ServerName指定必须在请求的Host:标头中显示哪个主机名才能匹配此虚拟主机。”
如果您请求beta.home.lan
以外的任何内容,则两个VirtualHost中的ServerNames都不匹配 - 并且适用于此情况,
http://httpd.apache.org/docs/2.2/en/vhosts/name-based.html#using:
“如果找不到匹配的虚拟主机,则将使用与IP地址匹配的第一个列出的虚拟主机。”
在第二个VirtualHost中使用ServerAlias
。
<VirtualHost *:80>
ServerName beta.home.lan
DocumentRoot /var/www/beta
</VirtualHost>
<VirtualHost *:80>
ServerAlias *.home.lan
DocumentRoot /var/www/others
</VirtualHost>