这可能是一个简单的问题,但我想更好地理解Apache如何与虚拟主机一起工作.我正在设置虚拟主机,因为我一次在多个网站上工作,我不想使用子目录.我几乎使用默认的Apache httpd.conf文件,DocumentRoot指向"/ www"之类的东西.我取消注释虚拟主机包括并添加以下内容:
NameVirtualHost *:80ServerName site1.dev DocumentRoot /www/site1 ServerName site2.dev DocumentRoot /www/site2
现在,当我访问http:// localhost时,我得到了site1的默认页面.
我确信这是有道理的,但我不太明白.我原以为只有明确要求http://site1.test的请求才会通过该指令进行路由,它不会成为默认值.有人可以解释为什么它成为默认值.
http://httpd.apache.org/docs/1.3/vhosts/name-based.html
(对于2.x也应如此)
"如果找不到匹配的虚拟主机,则将使用与IP地址匹配的第一个列出的虚拟主机.
因此,第一个列出的虚拟主机是默认虚拟主机.当IP地址与NameVirtualHost指令匹配时,永远不会使用主服务器的DocumentRoot.如果您希望对与任何特定虚拟主机不匹配的请求进行特殊配置,只需将该配置放在容器中,然后将其列在配置文件中."