Apache の Rewrite 機能で試してた設定をメモ書きしておく。

ある CGI から別の CGI を呼び出す

/test/one.cgi?x=1&y=2… のようなリクエストを /another.cgi?x=1&y=2… と受けるには

RewriteRule ^/test/one.cgi(.*)$ /another.cgi?$1

ではできない。URL引数はマッチ対象に含まれないためだ。%{QUERY_STRING} を渡せば良い。

RewriteEngine On
RewriteRule ^/test/one.cgi$ /another.cgi?%{QUERY_STRING}

とする。

CGI の引数を組み変えるには

arg=xxxx,yyyy を user=xxxx&pass=yyyy としたい場合は

RewriteEngine On
RewriteCond %{QUERY_STRING} ^arg=(.),(.)$
RewriteRule ^/test/one.cgi$ /another.cgi?user=%1&pass=%2

とする。この場合は、arg=… という引数があるのが条件になっているので、付いていないとリライトは走らない。