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

时间:2014-01-13 16:01:09

标签: apache subdomain document-root

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

中定义虚拟主机

/etc/httpd/conf/httpd.conf中

<VirtualHost *:80>
     ServerAdmin webmaster@domain.com
     DocumentRoot /var/www/domain.com/public_html
     ServerName domain.com
     ServerAlias www.domain.com
</VirtualHost>

<VirtualHost *:80>
     ServerAdmin webmaster@domain.com
     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

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

[root@public_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时,它会显示与domain.com相同的页面

我在

中创建了一个index.html

/var/www/demo.domain.com/public_html

[root@public_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

2 个答案:

答案 0 :(得分:0)

当您说“它显示与我的主域名相同的网站”时,它是否将子域显示为主域的子目录?例如,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]

答案 1 :(得分:0)

正如arco444建议的那样。

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

并注释掉

#NameVirtualHost *:80

所以它会变成

NameVirtualHost *:80

然后输入

重启apache
service httpd restart

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