我在子文件夹中通过 IP 托管了多个应用程序(http://ip/应用程序)。我现在还想托管一个域名,我已经能够设置虚拟主机,以便域名可以在其文档根目录中正确加载,但我的其余应用程序停止工作并指向该域名的同一虚拟主机文档根目录。
我如何维护现有的设置以便所有其他请求都表现相同?
答案1
听起来你想让服务器的 IP 提供与VirtualHost
你配置的新 IP 不同的内容。
除非另有配置,否则Apache 服务器在访问 IP 时将默认使用DocumentRoot
指定的 IP 地址之外的IP 地址。使用 IP 或VirtualHost 指定 IP 地址也是可行的。VirtualHost
VirtualHost
_default_
如果您需要更多帮助,请提供更多信息,包括完整的 Apache 配置文件。
答案2
如果您之前没有定义 VirtualHosts,对服务器的请求将通过 httpd.conf/apache2.conf 中的标准配置进行过滤。
这意味着主机将绑定到行上指定的任何内容,并从Apache 配置文件中指定的Listen
标准提供服务(默认情况下,在基于 Redhat 的系统上,这是 /var/www/html)。DocumentRoot
一旦你开始添加VirtualHost
和NameVirtualHost
指令,而不是遵循这些约定,对未指定的请求ServerName
将过滤到第一的指定的VirtualHost
节。
httpd -S
如果你使用(apache2 -S
在 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 设置为第一的Apache 配置中有一个。