我在子文件夹(http://ip/app)中通过IP托管了几个应用程序。我现在还想托管一个域,我已经能够设置虚拟主机,以便域在它的文档根中正确加载,但是我的其他应用程序停止工作,并指向域的同一个虚拟主机文档根。
如何维护我的现有设置,使所有其他请求的行为相同?
发布于 2011-05-17 21:44:00
如果以前没有定义VirtualHosts,那么对服务器的请求将通过httpd.conf/apache2.conf中的标准配置进行筛选。
这意味着主机将绑定到Listen行中指定的任何内容,并从Apache文件中指定的标准DocumentRoot (默认情况下这是/var/www/html在基于红帽的系统中)提供服务。
一旦您开始添加VirtualHost和NameVirtualHost指令,而不是遵循这些约定,对未指定的ServerName的请求就会过滤到第一个指定的VirtualHost节。
如果使用httpd -S (apache2 -S on debuntu)转储Apache配置,您可以看到这一点:
[root@server]$ httpd -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server somesite.com (/etc/httpd/conf/httpd.conf:1050)
port 80 namevhost somesite.com (/etc/httpd/conf/httpd.conf:1050)
port 80 namevhost othersite.org (/etc/httpd/conf/httpd.conf:1074)
Syntax OK基本上,您只需要定义一个与默认配置相匹配的VirtualHost,即将DocumentRoot设置为任何主配置DocumentRoot,并再次配置基本指令,这样它们就不会被覆盖。您需要将这个VirtualHost作为中的第一个。
https://serverfault.com/questions/126626
复制相似问题