Apache のドキュメント、Google、stackoverflow でかなりの時間を費やしましたが、問題を解決できません。背景は次のとおりです。画像をデータベースにブロブ形式で保存しています。イメージの名前をクエリ文字列として受け取り、イメージ タグ内でイメージをエコーする imageRender.php というスクリプトがあります。
<img src='/script/imageRender.php?name=foo'/>
src 属性を単純化するために、Apache mod_rewrite を使用して、より単純な src を上記のものにマップしようとしています。
<img src='image=foo'/>
関連する書き換えコードは次のとおりです。
RewriteCond %{REQUEST_URI} image=(.*)$
RewriteRule . /scripts/imageRender.php?name=%1 [L]
書き換えログの関連セクションは次のとおりです。
(2) init rewrite engine with requested uri /image=foo
(1) pass through /image=foo
(3) [perdir M:/sample/website/] strip per-dir prefix: M:/sample/website/image=foo -> image=foo
(3) [perdir M:/sample/website/] applying pattern '.' to uri 'image=foo'
(4) [perdir M:/sample/website/] RewriteCond: input='/image=foo' pattern='image=(.*)$' => matched
(2) [perdir M:/sample/website/] rewrite 'image=foo' -> '/scripts/imageRender.php?name=foo'
(3) split uri=/scripts/imageRender.php?name=foo -> uri=/scripts/imageRender.php, args=name=foo
(1) [perdir M:/sample/website/] internal redirect with /scripts/imageRender.php [INTERNAL REDIRECT]
したがって、私の書き直しは正しい php スクリプトを呼び出しているようです。ただし、書き換えログの最後の行は、URI にクエリ文字列が付加されていないことを示しています。これは、私の画像がレンダリングされていないという事実によって証明されています。(私は自分の imageRender.php コードをテストしました。適切なクエリ文字列を指定すると完全に動作します)
書き換えログの最後から 2 行目でuri が分割されるのはなぜですか?
どこで間違ったのですか?
どんな助けでも大歓迎です。