Apache 2.2子域名显示与主域名相同的网站

问题描述:

我在www.domain.com上有主网站,并创建了一个名为demo.domain.com的子域名为 ,但是当我尝试访问子域名demo.domain.com时,它显示与我的主域相同的网站,我该如何解决这个问题? 下面是我如何在我的Apache 2.2子域名显示与主域名相同的网站

/etc/httpd/conf/httpd.conf中

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot /var/www/domain.com/public_html 
    ServerName domain.com 
    ServerAlias www.domain.com 
</VirtualHost> 

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot /var/www/demo.domain.com/public_html 
    ServerName demo.domain.com 
    ServerAlias www.demo.domain.com 
</VirtualHost> 

我甚至试过

service httpd restart 

它抛出

Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName 
[Mon Jan 13 15:54:14 2014] [warn] _default_ VirtualHost overlap on port 80, the first has precedence 
定义的虚拟主机

我在主文件中添加了主域和子域

[[email protected]_html]# cat /etc/hosts 
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 
::1   localhost localhost.localdomain localhost6 localhost6.localdomain6 
1.2.3.4 domain.com demo.domain.com 

我在我的DNS管理器中为子域名创建了一个A记录,指向我的主vps IP地址。 我的DNS文件

demo IN A 1.2.3.4 
@   IN A 1.2.3.4 
www   IN A 1.2.3.4 

所以,当我访问domain.com和demo.domain.com它显示

我已经在

创建的index.html在同一个页面domain.com的/var/www/demo.domain.com/public_html

[[email protected]_html]# cat index.html 
<html> 
    <head> 
    <title>www.example.com</title> 
    </head> 
    <body> 
    <h1>Success: You Have Set Up a Virtual Host</h1> 
    </body> 
</html> 

所以我是如何解决这一问题?我使用CentOS 6的,64位

当我尝试访问的子域demo.domain.com,其显示的同一站点中我的主域名www.domain.com

+1

你在你的httpd.conf中有'NameVirtualHost *:80'的地方吗?没有这个,你将会打到默认的VirtualHost。 – arco444

+0

是的,我有#NameVirtualHost *:80 在我的httpd.conf中,但它的注释掉了。 – AMB

+0

我刚刚评论它,并重新启动apache和瞧,它的作品.... +1 – AMB

正如arco444的建议。

尝试

cat /etc/httpd/conf/httpd.conf | grep NameVirtualHost 

,并注释掉

#NameVirtualHost *:80 

所以ITLL成为

NameVirtualHost *:80 

然后重新启动Apache通过输入

service httpd restart 

现在它应该显示子域的各自的网站/页面。

当你说“它显示与我的主域相同的网站“,它是否将子域显示为主域的子目录?例如,www.domain.com/demo/。这对于一些控制面板和服务器设置来说是相当正常的,尽管不太理想。使用/htaccess代替使用httpd.conf,你可能会得到更好的结果:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com [NC] 
RewriteCond %{REQUEST_URI} ^/demo [NC] 
RewriteRule ^demo/?(.*)$ http://demo.domain.com/$1 [R=301,L] 
+0

nope,其显示正确的子域http://demo.domain.com – AMB

+0

然后当你输入演示时,它究竟显示什么。 domain.com? “它显示同一网站”是什么意思?如果地址栏显示demo.domain.com,有什么问题? –