?を含むURLのリダイレクト

しゃれにならない日々。の8月25日でKeiさんが試されている、query文字列("index.cgi?d=20030825"の?以降の部分)を含むURLの転送リダイレクトですが、Apacheの設定でうまくいかないようであれば、index.cgiを別URLに転送するCGIに置き換えれば良いのではないかと思います。

Perlでごく簡単に書くなら、

#!/usr/bin/perl
# index.cgi

my $q = $ENV{QUERY_STRING};
$q =~ s/^d=(\d+)$/$1/;

print <<EOF;
Status: 301 Moved Permanently
Location: http://www.cozy.cx/td/?date=$q
Content-Type: text/html

<p><a href="http://www.cozy.cx/td/?date=$q">Moved.</a></p>
EOF

といった感じで。Locationヘッダの値は絶対URLです。

(2003年8月27日)

北村曉 kits@akatsukinishisu.net