cgiにrewriteする設定をhttpd.confに書く

id:yellow_73:20090309#p1 のつづき。
昨日のエントリでは表明していませんが、.htaccessでRewriteRuleを書いてあげるとうまくいくのは確認済みです。
.htaccessでフォルダごとに分散させるよりも中央集中で管理した方がいいかなと思い、
httpd.conf(あるいはIncludeでとりこまれるファイル)において、RewriteRuleを有効に機能させたい、ただしRewriteでのリダイレクト先はcgiである、というのが目的。
昨日は設定のトップレベル部に書いていましたが、.htaccessでうまくいくのだったら、Directory要素に押し込めたらどうだ、と思って実験したところ、うまくいきました。
昨日の例を使うと、


  RewriteEngine on
  RewriteRule ^/path/foo\.cgi$ /cgi-bin/foo.cgi?fixed=arg&%{QUERY_STRING}

ここでの注意点は、トップレベルで RewriteEngine on としていても、Directory要素内には影響を及ぼしませんで、Directory要素内であらためてRewriteEngine onを設定する必要があります。RewriteCondも同様。
ログには [INTERNAL REDIRECT] というのが混じってきました。これがローカルファイルを開く際のファイルパス再設定でなく、cgiにリダイレクトしている、という意味なんだろうと。