仅当文件不存在时才使用 ProxyPass

仅当文件不存在时才使用 ProxyPass

我见过这个例子:

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]

相关内容