2009-12-29

RewriteEngineって、面倒ねぇ

とあるお客さんのサーバ移行時に今まで使っていたホスト名と新サーバのホスト名が変更になるケースがあった。通常の静的コンテンツだけならredirectでどうとでもなるんだけど、GETの引数付きのcgiを多用していて、うまいことリダイレクトだけじゃいけなかったのさ。

たとえば、こんなURLを

http://www.xxx.yy.jp/abc.cgi?aaa=123&bbb=456&ccc=789


こんな風にしたいのさ。
http://ddd.eee.ff.jp/abc.exe?aaa=123&bbb=456&ccc=789


redirectじゃ、QUERYSTRINGをどうすることもできないから、rewrite使わなきゃならないんだけど、ホントに解りづらいのね。今までできるだけ避けて通ってきたツケが回ってきたような気分。



でもね。rewrite使っても単純にはうまくいかないのね。
いろいろ悩んだ末に、とりあえず出した結論がこれ。

RewriteEngine on
RewriteRule ^abc.cgi$ http://ddd.eee.ff.jp/abc.exe?fake=uso [QSA]

fakeなんて引数をつけたのは、[QSA]で付加されるQUERYSTRINGの先頭文字が&だから。
嘘の引数を先頭につけることで、何とか機能するようになった。
つまり、変換後のURLは、こんな感じ。

http://ddd.eee.ff.jp/abc.exe?fake=uso&aaa=123&bbb=456&ccc=789

まぁ、今日のところはこの辺で勘弁してちょうだい。

0 件のコメント: