0

サーバー上の潜在的なファイルの場所の詳細を渡すために次を使用していますが、3行目で失敗します。この行を削除することにより、test.php ファイルは、%1/%2 によって構築された正しいファイルの場所を認識します。

RewriteCond %{HTTP_HOST} ^([a-z0-9\-\_]+)\.domain\.com?
RewriteCond %{THE_REQUEST} (images/.*)
RewriteCond %{HTTP_HOST}%1 ^([a-z0-9\-\_]+)\.domain\.com(images/.*)
RewriteCond %1/%2 -f
RewriteRule ^.* test.php?file=%1/%2 [L]

機能したら、ファイルが新しい場所から存在する場合はファイルを提供します。そうでない場合は、次の書き換え関数がイメージを構築し、次回の場所に配置します。

どんな助けでも感謝します。

4

2 に答える 2

0

あなたの質問には必要な詳細が欠けていますが、何が起こっているのかを推測してみましょう。

のリクエストの場合http://abc123.domain.com/whatever/images/somefile.jpg:

RewriteCond 1 は and %1= "abc123" に一致します。

RewriteCond 2 は、and %2= "images/somefile.jpg" に一致します。

RewriteCond 3 は、「abc123.domain.comabc123」を「(something).domain.comimages/.*」に一致させようとしているため、まったく意味がありません。

RewriteCond 4 は、「abc123/images/somefile.jpg」が実際のファイルとして存在することを確認しようとします。

したがって、ディレクトリ構造は「/domainprefix/images」であると推測しているため、上記の URL を使用して、画像が「/abc123/images/somefile.jpg」に存在することを確認しようとしています。この場合、RewriteCond 3 と 4 を次のように変更する必要があります。

RewriteCond %{REQUEST_URI} /%1/%2
RewriteCond %{REQUEST_URI} -f

繰り返しますが、私はあなたの目標が何であるかを正確に推測する必要がありますが、これは少なくとも必要なものに近いはずです.

于 2013-02-21T02:56:29.030 に答える
0

わかりました、私は問題を解決しました。ここで誰かの頭痛の種を救うことが解決策です。

RewriteCond %{HTTP_HOST}%{THE_REQUEST} ^([a-z0-9\-\_]+)\.domain\.com.*?(/images[^\s]+)
RewriteCond %{DOCUMENT_ROOT}/%1%2 -f
RewriteRule ^.* %1%2 [L]

ファイル チェックにはドキュメント ルートが必要でした。これを解決するために何日も費やしました。最終的な結果は、上記が要求を取得してファイルを正しい場所に配置できるようになった後に別の書き換えを行わなければ、存在するファイルがそのまま提供されることです。David Ravetti の助けに感謝します。

于 2013-02-22T20:26:16.083 に答える