mod_rewriteでURLを扱いたいけど,スラッシュが消える.
http://example.com/http://example.com/39661 を http://example.com/index.php?url=http://example.com/39661 に
変換したくて,mod_rewrite使ってみたんだけど,結局動かなかった.
そのときの設定はコレ
RewriteRule ^(http://.*)$ http://example.com/index.php?url=$1 [L]
気になってhttp://のスラッシュを1個にすると動く,ただし,リダイレクト先が http://example.com/index.php?url=http:/example.com/39661 といった感じにスラッシュがひとつになってる.
RewriteRule ^(http:/.*)$ http://example.com/index.php?url=$1 [L]
アクセスログを見てみると
% tail -f /var/log/apache/access_log ::1 - - [14/Mar/2012:11:57:10 +0900] "GET /http://example.com/39661 HTTP/1.1" 302 358 ::1 - - [14/Mar/2012:11:57:10 +0900] "GET /http://example.com/index.php?url=http:/example.com/39661 HTTP/1.1" 200 600208 ::1 - - [14/Mar/2012:11:57:11 +0900] "GET /favicon.ico HTTP/1.1" 404 317 ::1 - - [14/Mar/2012:11:57:29 +0900] "OPTIONS * HTTP/1.0" 200 -
っつーことはapacheが丁寧に内部で連続したスラッシュを1つのスラッシュに変換してからmod_rewriteに渡してるんだな.うん.
追記:いままでMacで作業してたんだけどレン鯖に変えたらスラッシュが消えなかった.なんか設定でも悪いのかなー.