带有 * 通配符的 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 匹配。
我有两个虚拟主机,默认一个和另一个:
<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 匹配。