Apache 2.4中If语句中的%{DOCUMENT_ROOT}变量

时间:2016-12-27 21:51:57

标签: apache mod-rewrite


在Apache 2.4.6(来自CentOS 7存储库的最新版本)中我试图将所有PHP文件传递给特殊编译的PHP-FPM,以防#34; php7.enable"文件存在于网站的根目录中。

如果我试试这个:

$ jq --arg newname 'something' '(.z[] | select(has("name")).name) = $newname' input.json

条件有效,但RewriteRule行上的%{DOCUMENT_ROOT}未扩展为变量值,但每次都为空。奇怪的是,那就是"如果"块,扩展工程。 有没有人知道为什么以及如何使它工作? 感谢。

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的解决方法:

<FilesMatch "\.php$">
 Require all granted
 <If "-f '%{DOCUMENT_ROOT}/php7.enable'">
   SetHandler proxy:fcgi://127.0.0.1:9001
 </If>
</FilesMatch>

所以我根本不需要DOCUMENT_ROOT值,它完美无缺。 如果我把&#34; php7.enable&#34;文件到网站的DOCUMENT_ROOT,PHP-FPM(运行PHP7)正在解释所有PHP文件。如果在DOCUMENT_ROOT中找不到这样的文件,则使用Apache处理程序让PHP解释(OS内置)PHP5。

感谢所有想法,它帮助我找到解决问题根本原因的方法(在配置文件中使用VirtualDocumentRoot,DOCUMENT_ROOT可能没有正确填写)。

在这个问题中也可以看到 - Mass virtual hosting with Apache 2.4