kotaoueはそんなかんじ

kotaoueの最新情報。

クエリの文字列をはずしてリダイレクトする。

http://example.com/?hoge=piyo
みたいなGETで送っているクエリを
http://example.com/hoge/
のような別のURLにリダイレクトしたいときは、

RewriteCond %{QUERY_STRING} ^hoge=(.*)$
RewriteRule ^/$ http://example.com/hoge/ [R=301]

とかでいけるんじゃねと軽い気持ちで作業したらちょっとはまった話。

上の方法だと、条件に合致したあとの、リダイレクト先が
http://example.com/hoge/?hoge=piyo
になるので、リダイレクトが無限ループ・・・orz

ということで、リダイレクトが無限ループしないために、クエリを取り外す必要が・・・

RewriteCond %{QUERY_STRING} ^hoge=(.*)$
RewriteRule ^/$ http://example.com/hoge/? [R=301]

みたいにクエリを取り外すのは、リダイレクト先の末尾に?を付ければOKでした。

あと、
http://example.com/?hoge=piyo

http://example.com/hoge/piyo/
にする感じで、クエリの条件もURLに含めたい場合は、

RewriteCond %{QUERY_STRING} ^hoge=(.*)$
RewriteRule ^/$ http://example.com/hoge/%1/? [R=301]

のように、%1とかでクエリの条件が持ってこれるので、ソレを利用するとさ。

やっぱりちゃんと勉強しないと、変なとこでつまるなぁ・・・


コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。