我有一台全新的极简 Debian Lenny 服务器,它有一个 IP 地址,只运行 Apache。
就本文而言,我有两个域名,site1.com 和 site2.com,指向这台服务器。www 子域名是主域名的 CNAME。ping 所有四个条目(带有和不带有 www 子域名的两个域名)都指向正确的 IP 地址。
在服务器上,已在/etc/apache2/sites-available/中添加了两个虚拟主机,如下所示:
<VirtualHost *:80>
ServerName www.site1.com
ServerAlias site1.com
DocumentRoot /var/www.site1.com
<Directory /var/www.site1.com/>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/www.site1.com-error.log
LogLevel warn
CustomLog /var/log/apache2/www.site1.com-access.log combined
</VirtualHost>
第二个只是上面的副本,但带有 site2 引用。
启用两个虚拟主机并重新启动 Apache 后,site1.com、site2.com 和 www.site2.com 都指向了正确的站点。但是,出于某些烦人的原因,对于不匹配的虚拟主机,www.site1.com 指向默认站点 (/etc/apache2/sites-available/default)。
有人能解释为什么会发生这种情况吗?我已经检查了配置、日志、目录,甚至多次重新构建了服务器,但还是无法理解这个例子中 Apache 的行为。
非常感谢您的帮助。
答案1
我在 vhost 的 ServerName 中输入了拼写错误,否则机器的 ServerName 指向 www.site1.com,并且会覆盖 vhost 的定义。
答案2
我知道回复可能有点晚了...但也许你应该检查一下你是否有名称虚拟主机指令设置..如果设置了太多虚拟主机,Apache 将覆盖列表中的最后一个..或者给您一个错误并且根本不启动服务..