我见过这个例子:
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://app_cluster%{REQUEST_URI} [P,QSA,L]
我需要一个类似的东西,当静态文件不存在时,它将委托给 mod_proxy(即执行 ProxyPass)。这可行吗?
答案1
此带有标志的设置P
正是您要执行的操作。关于 P 标志的文档状态:
使用此标志(P)可以实现更强大的ProxyPass指令
关于这个例子的一些事情:正如安德鲁在他的回答中所提到的,这DOCUMENT_ROOT
不是必需的。
第二点就是要注意这些指令的位置:如果将其放在或类似的容器中,请删除 RewriteRule 的第一个“/”(^(.*)$)...
P 标志隐含着 L 标志,因此它没有被使用,但如果我们保留它,可能会更清楚一些。网址后面也需要一个“/”。
因此它可能会变成如下的样子:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ http://somewhere/$1 [P,QSA,L]