0

要求された画像が存在しない場合に備えて、.htaccess を介して動的な画像生成を使用する必要がありますが、.htaccess で次のコードを使用すると、1 つのことがわかりません。

# Images 
RewriteCond     %{SCRIPT_FILENAME}      !-f
RewriteCond     %{SCRIPT_FILENAME}      !-d
RewriteRule     ^static/images/([-\w]+)/([0-9]+)/([\.-\w]+)$   image_handler.php?area=$1& id=$2&filename=$3 [NC,QSA,L]

その画像へのURLがアドレスバーから要求された場合にのみ画像が生成されます(意味があることを願っています)。画像がHTMLで呼び出された場合に機能するはずです?

4

1 に答える 1

1

<img>Web サーバーの観点からは、ブラウザーのアドレス バーに URL を直接入力して行われた要求に応答することと、タグによって参照されるリソースをブラウザーが参照して実行した結果として要求に応答することに違いはありません。それを取得するリクエスト。(ここでの唯一の違いは、一方には HTTP リファラー ヘッダーが設定され、もう一方には設定されないことですが、それはあなたのケースには関係ありません)

どちらの場合も、要求が Web サーバーによって書き換えられ、(うまくいけば) 画像を返す PHP スクリプト ハンドラーに渡されます。したがって、あなたの仮定は正しいです。

うまくいかないのは、サーバー側のスクリプトなど、他の手段でこれらの「仮想イメージ」にアクセスしようとすることです。これらのルールを使用して実行しているのは、Web サーバーが HTTP 経由で受信したリクエストをstatic/images/、指定したプログラムによって処理されるものとして解釈するようにすることです。次に、上記のプログラムの出力で要求を満たします (この場合はimage_handler.php)。これらのイメージは、サーバーのディスクなどに保存またはコピーされることはありません (もちろん、スクリプトでそのようにしない限り)。したがって、サーバー側では、ディスク上の任意の場所でこれらのイメージを見つけようとしても機能せず、想定される対応するディレクトリ構造が存在しない可能性さえあります。

クライアント側 (HTML、Javascript 経由) では、静的リソースを扱っているのと同じように動作する必要があります (スクリプトがその側面でどのように処理するかがわからないため、キャッシュに関する考慮事項は別として)。

于 2012-06-07T22:53:44.830 に答える