Apache2 Apache 2.2是否忽略VirtualDocumentRoot虚拟主机?

Apache2 Apache 2.2是否忽略VirtualDocumentRoot虚拟主机?,apache2,virtualhost,apache,httpd.conf,Apache2,Virtualhost,Apache,Httpd.conf,我有几个域,我希望通过mod_vhost_别名启用通配符子域 在我的httpd.conf中,我有以下通用规则: <VirtualHost [ip here]:80> ServerName domain1.com ServerAlias www.domain1.com DocumentRoot /home/user1/public_html </VirtualHost> <VirtualHost [ip here]:80> Ser

我有几个域,我希望通过mod_vhost_别名启用通配符子域

在我的httpd.conf中,我有以下通用规则:

<VirtualHost [ip here]:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /home/user1/public_html
</VirtualHost>
<VirtualHost [ip here]:80>
    ServerName *.domain1.com
    VirtualDocumentRoot /home/user1/subdomains/%-3+
</VirtualHost> 

<VirtualHost [ip here]:80>
    ServerName domain2.com
    ServerAlias www.domain2.com
    DocumentRoot /home/user2/public_html
</VirtualHost>
<VirtualHost [ip here]:80>
    ServerName *.domain2.com
    VirtualDocumentRoot /home/user2/subdomains/%-3+
</VirtualHost>
#httpd-M 加载的模块: 核心模块(静态) mpm_预工作_模块(静态) http_模块(静态) so_模块(静态) 重写模块(共享) 验证基本模块(共享) authz_主机_模块(共享) 包含_模块(共享) 日志配置模块(共享) 逻辑模块(共享) mime_魔法_模块(共享) mime_模块(共享) vhost_别名_模块(共享) dir_模块(共享) suexec_模块(共享) php5_模块(共享) suphp_模块(共享) ssl_模块(共享) 语法正常
任何关于问题所在的建议都将不胜感激。

我真是个笨蛋,这是一个非常简单的解决方案

ServerName
不允许使用通配符,但是
ServerAlias
允许使用通配符,所以我只是再次复制了ServerName

这是所有碰巧找到这个答案的人的最终最小化配置(我讨厌你在谷歌上搜索,发现问题却没有答案):


ServerName域名1.com
ServerAlias www.domain1.com
DocumentRoot/home/user1/public\u html

ServerName domain1.com 35;David,此解决方案可在成功解决问题时停止mod#u重写周期)

重写循环赛:

RewriteCond %{ENV:REDIRECT_STATUS} 200|[45]0[0-9] RewriteRule .* - [L] RewriteCond%{ENV:REDIRECT_STATUS}200|[45]0[0-9] 重写规则。*-[L]
你能在VirtualDocumentRoot中使用通配符吗?好吧,这是一个来自我不活动的超晚回复,很可能你看不到,但其他人可能会看到。是的,-3+就是这样做的,它把从第三部分开始的所有东西(用点分隔)从右边和前面的所有东西都取下来。对于
http://subsub.sub.domain1.com
它将使用
/home/user1/subdomains/subsubsub.sub/
作为文档根。@Kyle和Mike实际上没有通配符(“***”),只是它更像
substr
。另外,我相信
VirtualDocumentRoot
实际上是在
之外使用的,但我们可以通过在内部使用来限制它。 # httpd -M Loaded Modules: core_module (static) mpm_prefork_module (static) http_module (static) so_module (static) rewrite_module (shared) auth_basic_module (shared) authz_host_module (shared) include_module (shared) log_config_module (shared) logio_module (shared) mime_magic_module (shared) mime_module (shared) vhost_alias_module (shared) dir_module (shared) suexec_module (shared) php5_module (shared) suphp_module (shared) ssl_module (shared) Syntax OK
<VirtualHost [ip here]:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /home/user1/public_html
</VirtualHost>
<VirtualHost [ip here]:80>
    ServerName domain1.com #<-- The fix. Wildcards not supported in ServerName
    ServerAlias *.domain1.com
    VirtualDocumentRoot /home/user1/subdomains/%-3+
</VirtualHost>
RewriteCond %{ENV:REDIRECT_STATUS} 200|[45]0[0-9] RewriteRule .* - [L]