Apache 问题:子域名转到域名,无需

Apache 问题:子域名转到域名,无需

我有一台安装了传统 LAMP 的 Ubuntu 10.04 LTS 机器。我创建了两个网站:

一个公共网站,网址为 www.mysite.com

目前开放的“私人”网站,网址为 private.mysite.com

我为它们创建了两个不同的配置文件,

/etc/apache/sites-available/mysite

/etc/apache/sites-available/private-mysite

使用默认的 Apache 虚拟主机配置。没有通配符,ServerName 分别是 www.mysite.com 和 private.mysite.com,我没有使用通配符。

当然,还有指向 /sites-enabled 的符号链接。每个站点都有自己的目录,

/var/www/我的网站

/var/www/private-mysite

公共站点是一个 WordPress 博客。私人站点是一个包含多个 php 文件的 webapp。

一切都应该没问题,我已经检查了好几次,但奇怪的事情发生了。当我访问 private.mysite.com 时,私人部分一切正常。

但是当我访问 www.mysite.com 时,服务器直接转到 private.mysite.com。

Apache 日志显示对 www.mysite.com 的请求甚至没有被记录

/var/www/mysite/logs/access.log (或 error.log)

他们反而

/var/www/private-mysite/logs/access.log

因此,每个请求都会转到子域。有什么办法可以纠正此行为吗?

***************************** 更新 **********************************

更多信息:

ls -l /etc/apache2/sites-available/

-rw-r--r-- 1 root root  859 2011-05-27 13:33 private-mysite
-rw-r--r-- 1 root root  948 2010-11-18 22:16 default
-rw-r--r-- 1 root root 7467 2010-11-18 22:16 default-ssl
-rw-r--r-- 1 root root  264 2011-05-27 14:22 mysite

/etc/apache2/sites-available/private-mysite 内容:

<VirtualHost x.x.x.x:80>
     ServerName private.mysite.com
     DocumentRoot /var/www/private-mysite/html/
     ErrorLog /var/www/private-mysite/logs/error.log
     CustomLog /var/www/private-mysite/logs/access.log combined
</VirtualHost>

/etc/apache2/sites-available/mysite 内容:

<VirtualHost x.x.x.x:80>
     ServerName www.mysite.com
     ServerAlias mysite.com
     DocumentRoot /var/www/mysite/
     ErrorLog /var/www/mysite/logs/error.log
     CustomLog /var/www/mysite/logs/access.log combined
</VirtualHost>

答案1

主机VirtualHost定义块需要与NameVirtualHost指令匹配。它可能位于 中/etc/apache2/ports.conf,并且可能设置为*:80

要解决此问题,请更改您的NameVirtualHost

NameVirtualHost x.x.x.x:80

或者改变你的VirtualHost定义:

<VirtualHost *:80>

答案2

请发布配置文件本身和ls -l /etc/apache/sites-available。重新启动 Apache 时是否看到任何错误或警告?

发生这种情况可能是因为 www.mysite.com 由于某种原因不匹配,所以 Apache 使用 private.mysite.com 作为默认虚拟主机(因为它是唯一存在的)。

相关内容