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

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

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