web-dev-qa-db-ja.com

ファイルが存在しない場合のみProxyPass

私はこの例を見ました:

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://app_cluster%{REQUEST_URI} [P,QSA,L]

静的ファイルが存在しない場合にmod_proxyに委任する(つまり、ProxyPassを実行する)同様のものが必要です。それは可能ですか?

5
kaqqao

Pフラグを使用したこのセットアップは、実行する作業に適しています。 Pフラグに関するドキュメント の状態:

このフラグ(P)を使用して、ProxyPassディレクティブのより強力な実装を実現します。

例に関するいくつかのこと:Andrewが彼の回答で述べたように、DOCUMENT_ROOTは必要ありません。

2つ目は、これらの命令が置かれている場所に注意を払うことです。RewriteRuleの最初の "/"を削除します(^(。*)$)これを類似のコンテナに配置する場合...

また、PフラグはLフラグを意味するため、使用されませんが、そのままにしておくと少し明確になる場合があります。また、Webアドレスの後に「/」が必要です。

だからそれは次のようなものになるかもしれません:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ http://somewhere/$1 [P,QSA,L]
3
Zimmi