Apache2 通配符未显示正确的 DocumentRoot
Apache2 wildcard not showing the correct DocumentRoot
出于某种原因,我的 apache2 服务器向我显示了另一个虚拟主机的内容,而不是通配符虚拟主机。
当我输入 hello.purecore.io 时,apache2 服务器显示 api.purecore.io 中的内容,而它应该显示另一个文件夹。
我的通配符域的虚拟主机配置是
<VirtualHost *:80>
DocumentRoot /var/www/wildcard.purecore.io
ServerName wildcard.purecore.io
ServerAlias *.purecore.io
</VirtualHost>
并保存为“00_wildcard.purecore.io.conf”,
api.purecore.io 的虚拟主机是
<VirtualHost api.purecore.io:80>
DocumentRoot /var/www/api.purecore.io/
ServerName api.purecore.io
ServerAdmin quiquelhappy@purecore.io
</VirtualHost>
保存为api.purecore.io.conf。所以,
- 当输入除 api.purecore.io 以外的任何随机子域时,它应该从 /var/www/wildcard.purecore.io,
加载内容
- 访问api.purecore.io时,应该加载/var/www/api的内容。purecore.io/
但由于某些原因,访问随机域时,它也显示 /var/www/api.purecore.io/ 的内容。
Apache 按读取顺序处理 <VirtualHost>
部分。所以这里读到的第一个是00_wildcard.purecore.io.conf
,然后是api.purecore.io.conf
.
但是 ServerAlias *.purecore.io
行包含域 api.purecore.io
,因此它使用来自该 VirtualHost 的配置。
解决方案,重命名文件以确保顺序正确。你想把最严格的 VirtualHost 放在第一位,然后是通配符。
mv 00_wildcard.purecore.io.conf 01_wildcard.purecore.io.conf
mv api.purecore.io.conf 00_api.purecore.io.conf
并重新启动(或优雅)。
仅供参考 1:如果 Apache 找不到与请求匹配的另一个 VirtualHost 定义,则第一个 VirtualHost 始终是默认值。
仅供参考 2:不需要 <VirtualHost api.purecore.io:80>
,输入 <VirtualHost *:80>
,顺序就是这里的解决方案。
出于某种原因,我的 apache2 服务器向我显示了另一个虚拟主机的内容,而不是通配符虚拟主机。
当我输入 hello.purecore.io 时,apache2 服务器显示 api.purecore.io 中的内容,而它应该显示另一个文件夹。
我的通配符域的虚拟主机配置是
<VirtualHost *:80>
DocumentRoot /var/www/wildcard.purecore.io
ServerName wildcard.purecore.io
ServerAlias *.purecore.io
</VirtualHost>
并保存为“00_wildcard.purecore.io.conf”, api.purecore.io 的虚拟主机是
<VirtualHost api.purecore.io:80>
DocumentRoot /var/www/api.purecore.io/
ServerName api.purecore.io
ServerAdmin quiquelhappy@purecore.io
</VirtualHost>
保存为api.purecore.io.conf。所以,
- 当输入除 api.purecore.io 以外的任何随机子域时,它应该从 /var/www/wildcard.purecore.io, 加载内容
- 访问api.purecore.io时,应该加载/var/www/api的内容。purecore.io/
但由于某些原因,访问随机域时,它也显示 /var/www/api.purecore.io/ 的内容。
Apache 按读取顺序处理 <VirtualHost>
部分。所以这里读到的第一个是00_wildcard.purecore.io.conf
,然后是api.purecore.io.conf
.
但是 ServerAlias *.purecore.io
行包含域 api.purecore.io
,因此它使用来自该 VirtualHost 的配置。
解决方案,重命名文件以确保顺序正确。你想把最严格的 VirtualHost 放在第一位,然后是通配符。
mv 00_wildcard.purecore.io.conf 01_wildcard.purecore.io.conf
mv api.purecore.io.conf 00_api.purecore.io.conf
并重新启动(或优雅)。
仅供参考 1:如果 Apache 找不到与请求匹配的另一个 VirtualHost 定义,则第一个 VirtualHost 始终是默认值。
仅供参考 2:不需要 <VirtualHost api.purecore.io:80>
,输入 <VirtualHost *:80>
,顺序就是这里的解决方案。