gpt4 book ai didi

Apache 多个 VirtualDocumentRoot

转载 作者:行者123 更新时间:2023-12-03 22:02:19 25 4
gpt4 key购买 nike

在 Linux 系统上使用 Apache2 有没有办法使用 mod_vhost_alias 拥有多个 VirtualDocumentRoot ?

这是我目前正在使用并希望继续使用的命名约定:

host                    directory
127.0.0.1 domain domain.com
127.0.0.1 sub.domain domain.com_sub

然后在 httpd.conf 的 vhosts 部分中,我有:
NameVirtualHost 127.0.0.1

<VirtualHost 127.0.0.1>
VirtualDocumentRoot /var/www/%0.0.com
</VirtualHost>

<VirtualHost 127.0.0.1>
VirtualDocumentRoot /var/www/%2.0.com_%1
</VirtualHost>

问题是当我访问 sub.domain 时,Apache 错误日志显示它正在寻找/var/www/sub.domain.com 而不是/var/www/domain.com_test 这让我相信它只读取第一条规则然后失败,但我希望它做的是使用满足两个 VirtualDocumentRoot 规则之一的任何文档根。

最佳答案

Apache 通常会选择第一个虚拟主机,其 ServerNameServerAlias匹配 Host 中提供的主机名HTTP header 。在你的情况下,因为你没有 ServerName指令,Apache 据称使用对 IP 地址的反向 DNS 查找来伪造服务器名称,并假设反向 DNS 指向不匹配的 domain.com,然后 Apache 默认为第一个虚拟主机。听起来很复杂,我知道……底线是,你应该使用 ServerNameServerAlias使配置显式。尝试更像这样的事情:

NameVirtualHost 127.0.0.1
<VirtualHost 127.0.0.1>
ServerName domain.com
ServerAlias www.domain.com
VirtualDocumentRoot /var/www/%0
</VirtualHost>
<VirtualHost 127.0.0.1>
ServerName sub.domain.com
ServerAlias *.domain.com
VirtualDocumentRoot /var/www/%2.%3_%1
</VirtualHost>

那应该使用 /var/www/domain.comhttp://domain.com/var/www/www.domain.comhttp://www.domain.com ,两者都由第一个 vhost 服务,和 /var/www/sub.domain.comhttp://sub.domain.com , /var/www/blah.domain.comhttp://blah.domain.com , 等等。

关于Apache 多个 VirtualDocumentRoot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/550525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com