在Linux系统上使用Apache2有一种方法可以使用mod_vhost_alias来拥有多个VirtualDocumentRoot 吗?
这是我目前正在使用的命名约定,并希望继续使用:
host directory
127.0.0.1 domain domain.com
127.0.0.1 sub.domain domain.com_sub
Run Code Online (Sandbox Code Playgroud)
然后在我的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>
Run Code Online (Sandbox Code Playgroud)
这个问题是当我访问sub.domain时,Apache错误日志显示它正在寻找/var/www/sub.domain.com而不是/var/www/domain.com_test这让我相信它只会读取第一个规则,然后失败,但我希望它做的是使用满足两个VirtualDocumentRoot规则之一的任何文档根.
Dav*_*d Z 13
Apache通常会选择与HTTP标头中提供的主机名匹配ServerName
或ServerAlias
匹配的第一个虚拟主机Host
.在您的情况下,由于您没有ServerName
指令,Apache应该在IP地址上使用反向DNS查找来伪造服务器名称,并假设反向DNS导致domain.com,它不匹配,Apache然后默认为第一个虚拟主机.听起来很复杂,我知道......最重要的是,您应该使用ServerName
并ServerAlias
明确配置.尝试更像这样的东西:
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>
Run Code Online (Sandbox Code Playgroud)
这应该使用/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,等等.
归档时间: |
|
查看次数: |
22096 次 |
最近记录: |