带有 * 通配符的 apache 2.4 serverAlias 覆盖指定的虚拟主机

apache 2.4 serverAlias with * wildcard overwrittes specificed vhost

我有两个虚拟主机,默认一个和另一个:

<VirtualHost *:80>
    ServerName www.eve-stuff.com
    ServerAlias *.eve-stuff.com
    DocumentRoot /var/www/html/test
    <Directory /var/www/html/test>
        Options +FollowSymLinks
        AllowOverride None
        #Require all denied
    </Directory>
</VirtualHost>

这个应该只是将所有未专门设置的子域重定向到测试目录。 这是我的另一个虚拟主机:

<VirtualHost *:80>
        ServerName dev.eve-stuff.com
        DocumentRoot /var/www/html/dev 
        <Directory /var/www/html/dev>
                Options +FollowSymLinks
                AllowOverride None
        </Directory>
</VirtualHost>

这个应该显示 dev 子域的 dev 文件夹。

据我从 apache 文档中了解到,第一台主机中的 ServerAlias *.eve-stuff.com 将始终捕获,除非专门为该地址创建了另一个虚拟主机。

但是 dev.eve-stuff.com 仍然重定向到 test 文件夹而不是 dev 文件夹,正如它应该的那样。

所有 dns 条目,包括子域,都指向正确的 IP。 我是运行Apache/2.4.18(Ubuntu).

原来设置的顺序很重要。 Apache 显然在寻找它能找到的匹配主机。
由于第一个配置在 000-default.conf 中,第二个配置在 020-dev.conf 中,因此开发子域与第一个 vhost 匹配并使用了它。
我将默认值更改为 999-default.conf,这意味着现在 dev 将首先与正确的 vhost 匹配,但其他未定义的子域仍将与默认 vhost 匹配。