_default_ VirtualHost在端口80上重叠


10

我已将2个虚拟主机添加到我的apache2 conf文件中,如下所示:

<VirtualHost *:80>
    DocumentRoot /var/www/html/site1
    ServerName www.site1.com
    ServerAlias site1.com
</VirtualHost>


<VirtualHost *:80>
    DocumentRoot /var/www/html/site2
    ServerName www.site2.com
    ServerAlias site2.com
</VirtualHost>

然后我重新启动apache后得到错误:

[警告] 默认 VirtualHost在端口80上重叠,第一个优先

搜索谷歌,他们说要取消注释下面的行,所以我做到了:

NameVirtualHost *:80

重新启动,现在我没有收到错误,但是两个站点都转到第一个站点。

运行Centos5。我该如何解决这个问题?

Answers:


13

您绝对希望对NameVirtualHost保持注释。这会告诉您的服务器根据用于访问它的域名来为服务器提供不同的虚拟主机。这就是为什么您看到所有请求在被删除后都转到第一个站点的原因。


1
是的,我已经做到了,但仍然无法正常工作。
David

即使使用它,它也无法正常提供site2.com吗?看起来您的警告似乎只是在说您的第一个VirtualHost是名称不匹配的默认站点。这实际上就是虚拟主机的工作方式。
Christopher Karel

1
在取消注释该行之后,我没有收到警告,并且两个站点仍然都转到site1
David

您的浏览器是否可能刚刚将site1的内容缓存在site2的域下?尝试清除缓存或进行适当的刷新。(ctrl + F5)
Christopher Karel 2009年

1

我已经用CWP解决了这个问题

只需转到/usr/local/apache/conf/sharedip.conf

检查此放*在您的IP服务器

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName yourdomainserver.ltd
    DocumentRoot /usr/local/apache/htdocs
    ServerAdmin root@youremail.com
    <IfModule mod_suphp.c>
        suPHP_UserGroup nobody nobody
    </IfModule>
</VirtualHost>
<Directory "/">
        AllowOverride All
        Allow from all
        Order Deny,Allow
</Directory>

然后转到/usr/local/apache/conf.d/vhost.conf并确保每个虚拟主机都像这样

# vhost_start chango.com.ve
<VirtualHost *:80>
ServerName yourdomain.ltd
ServerAlias www.yourdomain.ltd
ServerAdmin youremail@yourdomain.ltd
DocumentRoot "/home/yourdomain/public_html"
ScriptAlias /cgi-bin/ "/home/yourdomain/public_html/cgi-bin/
# 
# Custom settings are loaded below this line (if any exist)
# Include "/usr/local/apache/conf/userdata/yourdomain/yourdomain.ltd/*.conf    
</VirtualHost>^M
# vhost_end yourdomain.ltd

这对我有用!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.