我想使用 a 中设置的VirtualDocumentRoot
值RewriteRule
。
Apache文档说:
要确定的另一件事是文档根目录(使用 DocumentRoot 配置并通过 DOCUMENT_ROOT 环境变量可用于 CGI 脚本)。在正常配置中,核心模块在将 URI 映射到文件名时使用它,但是当服务器配置为进行动态虚拟主机时,该作业必须由另一个模块(mod_vhost_alias 或 mod_rewrite)接管,该模块具有不同的映射的方式。这些模块都不负责设置 DOCUMENT_ROOT 环境变量,因此如果任何 CGI 或 SSI 文档使用它,它们将获得误导性值。
参考文档,看来我将无法%{DOCUMENT_ROOT}
在RewriteRule
. 但在寻找替代解决方案后,我发现这张票(标题: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_ROOT}
默认值由 httpd.conf 中的 DocumentRoot 设置。我希望%{DOCUMENT_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>
有解决办法吗?