みたいな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とかでクエリの条件が持ってこれるので、ソレを利用するとさ。やっぱりちゃんと勉強しないと、変なとこでつまるなぁ・・・
0 件のコメント:
コメントを投稿