Apache 上无法加载子域名,只能加载主站点

Apache 上无法加载子域名,只能加载主站点

我已经和这个奇怪的问题斗争了好几个小时。我认为我把所有文件都整理好了,一切都应该正常,但事实并非如此。我有

  • domain.com(别名:www.domain.com)
  • 子域名.域名.com

这应该是两个不同的网站。

这些是我的配置文件(Ubuntu 10.04):

Apache2.conf:

Include /etc/apache2/sites-enabled/ 
Include /opt/subdomain.conf

端口.conf:

NameVirtualHost 123.123.123.123:80
Listen 80

在 /etc/apache2/sites-enabled/000-默认:

<VirtualHost 123.123.123.123:80>
    DocumentRoot /home/landing/www
    <Directory /home/landing/www>
        Options None
        AllowOverride None
    </Directory>
</VirtualHost>

--> 不指定 ServerName。捕获对 IP 的请求,并确实打开 /home/landing/www

在 /etc/apache2/sites-enabled /domain1 上配置:

<VirtualHost 123.123.123.123:80>
    ServerName domain1.com
    DocumentRoot /home/domain1/www
    ServerAlias www.domain1.com
    <Directory /home/domain1/www>
    Options None +FollowSymLinks
        Order Allow,Deny
        Allow from All
    </Directory>
</VirtualHost>

--> 这是主站点。打开正常,也可以使用 www.domain.com

/opt/subdomain.conf:

<VirtualHost 123.123.123.123:80>
ServerName subdomain.domain1.com
DocumentRoot "/opt/subdomain/www"
</VirtualHost>

--> 问题就在这里。它无法打开。而是打开 /home/landing/www...?当我打开任何子域时都会发生这种情况,因此整个配置似乎被忽略了。有人知道为什么吗?或者如何检查?

答案1

据我所知,这是由于您在第一个 VirtualHost 中没有使用 ServerName。

您不能混淆 apache 中的基于名称和不基于名称的虚拟主机,这会造成很大的混乱,apache 将按照配置顺序尽“最大努力”匹配域。

建立默认虚拟主机的推荐方法仍然是在其中包含 ServerName(应该如此),但将 VirtualHost 行从

<VirtualHost 123.123.123.123:80>
    DocumentRoot /home/landing/www

对此

<VirtualHost _default_:80>
    DocumentRoot /home/landing/www
    ServerName blablabla

相关内容