mod_rewriteでURLのクエリを引き継いでリライトするRewriteRuleの書き方
mod_rewriteのRewriteRuleでクエリを引き継ぎたい場合は、QSAフラグが使えることを最近知りました。
たとえば次のようなURLをリクエストします。
http://example.com/status/fkoji?count=10
サーバ側で定義している RewriteRule は次のようなものです。
RewriteRule /([^/]+)/([^/]+) index.php?controller=$1&user_name=$2 [L]
この場合、リライト後のURLは、
http://example.com/index.php?controller=status&user_name=fkoji
となって元々存在していた count クエリが消えてしまって困ります。
こういう場合にQSAフラグを使うことができます。
RewriteRule /([^/]+)/([^/]+) index.php?controller=$1&user_name=$2 [QSA,L]
↑ このようにQSAフラグをつけると、
http://example.com/index.php?controller=status&user_name=fkoji&count=10
のようにきちんとクエリを引き継ぐことができます。
RewriteRule使ったらクエリが消えちゃって困った!という方は試してみてください。
コメントを残す