当前位置:  开发笔记 > 运维 > 正文

Apache Multiple VirtualDocumentRoot

如何解决《ApacheMultipleVirtualDocumentRoot》经验,为你挑选了1个好方法。

在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


    VirtualDocumentRoot /var/www/%0.0.com



    VirtualDocumentRoot /var/www/%2.0.com_%1

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



1> David Z..:

Apache通常会选择与HTTP标头中提供的主机名匹配ServerNameServerAlias匹配的第一个虚拟主机Host.在您的情况下,由于您没有ServerName指令,Apache应该在IP地址上使用反向DNS查找来伪造服务器名称,并假设反向DNS导致domain.com,它不匹配,Apache然后默认为第一个虚拟主机.听起来很复杂,我知道......最重要的是,您应该使用ServerNameServerAlias明确配置.尝试更像这样的东西:

NameVirtualHost 127.0.0.1

    ServerName domain.com
    ServerAlias www.domain.com
    VirtualDocumentRoot /var/www/%0


    ServerName sub.domain.com
    ServerAlias *.domain.com
    VirtualDocumentRoot /var/www/%2.%3_%1

这应该使用/var/www/domain.com的http://domain.com和/var/www/www.domain.com对http://www.domain.com,这两者都是由第一虚拟主机服务,并/var/www/sub.domain.com为http://sub.domain.com,/var/www/blah.domain.com对于HTTP:// blah.domain.com,等等.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有