F.Ko-Jiの「一秒後は未来」

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

最近はもっぱら仕事と育児、どちらかというと育児のほうが忙しいです。もう長いことドットインストールの開発をしています。

» 詳しいプロフィールや運営サービスの一覧など