ネットサービスとかGoogleとか豆知識とか。

Index > プログラミング > mod_rewriteでURLのクエリを引き継いでリライトするRewriteRuleの書き方
プログラミング
2008年07月17日 21:55

mod_rewriteでURLのクエリを引き継いでリライトするRewriteRuleの書き方

  • このエントリーをはてなブックマークに追加
  • ... PV
スポンサード リンク

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使ったらクエリが消えちゃって困った!という方は試してみてください。