/くろまじゅつしへの道/エンコードされたURLのRewrite
日本語URL等ではどうしても必要になる、ちょっとした技です。
ルール内ではURLはデコードされた状態で判定されるため、日本語を含むURLは少し細工が必要になります。
httpd.conf
RewriteMap escape-map prg:/var/www/rewritemap/escape.pl
RewriteRule ^/aki/sitedev2/index.php/(楽天ダウンロード)/([^/]+)/([^/]+)$ /aki/sitedev2/index.php/${escape-map:$1}/${escape-map:$2}/${escape-map:$3}/1 [NE,R=301]
escape.pl
#!/usr/bin/perl
$| = 1;
while (<>) {
chop;
s/([^\w])/'%'.unpack('H2', $1)/eg;
print $_."\n";
}
escape-mapという汎用的なルールを一つ用意しておくことで、日本語を含むURLのrewrite操作も問題なく行えるようになります。
上記の例はこのサイトの楽天ダウンロードの下で実際に使っています。