使用Apache2.4的大规模虚拟主机
我想在使用Apache2.4的大规模虚拟主机,apache,mod-rewrite,virtual-hosts,mod-vhost-alias,Apache,Mod Rewrite,Virtual Hosts,Mod Vhost Alias,我想在重写规则中使用VirtualDocumentRoot设置的值 阿帕奇说: 要确定的另一件事是文档根(使用DocumentRoot配置,并通过document\u root环境变量可供CGI脚本使用)。在正常配置中,核心模块在将URI映射到文件名时使用此功能,但当服务器配置为执行动态虚拟主机时,该任务必须由另一个模块(mod_vhost_别名或mod_rewrite)接管,该模块具有不同的映射方式。这两个模块都不负责设置DOCUMENT_ROOT环境变量,因此,如果任何CGIs或SSI文档使
重写规则中使用VirtualDocumentRoot
设置的值
阿帕奇说:
要确定的另一件事是文档根(使用DocumentRoot配置,并通过document\u root环境变量可供CGI脚本使用)。在正常配置中,核心模块在将URI映射到文件名时使用此功能,但当服务器配置为执行动态虚拟主机时,该任务必须由另一个模块(mod_vhost_别名或mod_rewrite)接管,该模块具有不同的映射方式。这两个模块都不负责设置DOCUMENT_ROOT环境变量,因此,如果任何CGIs或SSI文档使用它,它们将获得误导性的值
参考文档,我似乎无法在重写规则
中使用%{DOCUMENT\u ROOT}
。但在寻找替代解决方案后,我发现这个(标题:DOCUMENT_ROOT环境变量与VirtualDocumentRoot设置不正确)表示它已“在2.4.1中修复”
我使用的是Apache的最新(稳定)版本:
$ httpd -v
Server version: Apache/2.4.9 (Unix)
Server built: Jun 18 2014 03:07:48
。。。但这似乎对我不起作用。测试时,%{DOCUMENT\u ROOT}
具有httpd.conf中DocumentRoot设置的默认值。我希望%{DOCUMENT\u ROOT}
(或我可以使用的任何其他变量)由VirtualDocumentRoot
动态设置
以下是我想在httpd-vhosts.conf中使用的内容:
<VirtualHost *:8080>
ServerName dev
ServerAlias *.dev
VirtualDocumentRoot "/usr/local/var/www/.dev/%-2+"
RewriteRule ^/(.*\.php(/.*)?)$ "fcgi://127.0.0.1:9000%{DOCUMENT_ROOT}/$1" [P]
</VirtualHost>
<VirtualHost *:8080>
ServerName dev
ServerAlias *.dev
VirtualDocumentRoot "/usr/local/var/www/.dev/%-2+"
RewriteRule ^/(.*\.php(/.*)?)$ "fcgi://127.0.0.1:9000%{DOCUMENT_ROOT}/$1" [P]
</VirtualHost>
服务器名开发
ServerAlias*.dev
VirtualDocumentRoot“/usr/local/var/www/.dev/%-2+”
重写规则^/(.\.php(/.*)$”fcgi://127.0.0.1:9000%{DOCUMENT_ROOT}/$1“[P]
有解决办法吗?在与(感谢您的时间和帮助)一起研究了许多方向后,我终于找到了解决办法。正如我在中所说,它不是100%完美,但对我来说已经足够好了
为了清楚起见,我希望在httpd-vhosts.conf中包含以下内容:
<VirtualHost *:8080>
ServerName dev
ServerAlias *.dev
VirtualDocumentRoot "/usr/local/var/www/.dev/%-2+"
RewriteRule ^/(.*\.php(/.*)?)$ "fcgi://127.0.0.1:9000%{DOCUMENT_ROOT}/$1" [P]
</VirtualHost>
<VirtualHost *:8080>
ServerName dev
ServerAlias *.dev
VirtualDocumentRoot "/usr/local/var/www/.dev/%-2+"
RewriteRule ^/(.*\.php(/.*)?)$ "fcgi://127.0.0.1:9000%{DOCUMENT_ROOT}/$1" [P]
</VirtualHost>
如果你想办法“仅配置”,请留下评论,我将用你的贡献编辑我的答案