linux环境下 apache 下在conf.d目录添加httpd-vhosts.conf添加了一条虚拟主机规则文件后,发现 DocumentRoot 也变成了这个虚拟主机,即apache把localhost也当虚拟主机规则处理了。
DocumentRoot 下有其它文件(比如访问ip时显示默认页),但会被apache当虚拟主机规则处理,即自动显示到了虚拟主机(指定域名和目录)的页面。
虽然apache内并没有指定 localhost (即 *)到对应虚拟主机配置文件目录,但依然会被处理,解决方案如下,直接在httpd-vhosts.conf里头部添加此规则。
<VirtualHost *:80>
DocumentRoot “/var/www/html”
ServerName localhost
ServerAlias localhost
</VirtualHost>
即先规避。
原因:localhost 其实是 localhost:80 即便你没有 localhost 的规则,但只要你有端口号是80的规则也会匹配成功,会以第一条以80作为端口的规则进行处理,这也就是当你开启80端口的虚拟主机后会发现 localhost 成了你第一条80端口的虚拟主机规则 。
参考文献:https://my.oschina.net/sallency/blog/533562