2

query_string で指定されたファイルが存在することを確認する必要があります。私はすでにこのルールを持っています

RewriteCond %{QUERY_STRING} ^src=([^&]+)(.*)$
RewriteCond %1 -f
RewriteRule ^media/resizer/?(?:index\.php)?$ http://cdn.mysite.com/media/resizer/ [NC,R,L,QSA]

%1 には、2 行目に存在するかどうかを確認しようとするファイル名への正確なパスがあります。しかし、パターン '-f' RewriteLog をチェックするだけです:

RewriteCond: input='src=/forumsdata/images/avatars/james.jpg&w=120&h=120&zc=1' pattern='^src=([^&]+)(.*)$' => matched
RewriteCond: input='/forumsdata/images/avatars/james.jpg' pattern='-f' => not-matched

RewriteCond %{REQUEST_FILENAME} -f は media/resizer/index.php であり、その方法は機能しません。

何か案は?ありがとう。

4

1 に答える 1

0

最近、%{REQUEST_FILENAME} でこれと同じ「問題」が発生しました。ドキュメント参照によると %{REQUEST_FILENAME} :

REQUEST_FILENAME が参照された時点でサーバーによってすでに決定されている場合は、要求に一致するファイルまたはスクリプトへの完全なローカル ファイルシステム パス。それ以外の場合 (仮想ホスト コンテキストで使用される場合など)、REQUEST_URI と同じ値。AcceptPathInfo の値によっては、サーバーが REQUEST_URI の一部の主要コンポーネントのみを使用して、要求をファイルにマップした可能性があります。

したがって、これが仮想ホストのセットアップである場合は、次のように %{DOCUMENT_ROOT} を使用してフル パスを参照する必要がある場合があります。

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
于 2013-09-07T00:17:29.893 に答える