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=… という引数があるのが条件になっているので、付いていないとリライトは走らない。