mod_rewriteで特定のクエリーストリングをcookieに変換するメモ

the-us-constitution-isolated-on-white_sizeXS

見る人が見れば何をやろうとしたのかは分かると思うんですが、使わないので捨てる前に敢えてそのままの形でメモ。

mod_rewrite で特定のクエリストリングを検出したら→そのクエリストリングだけを削除→代わりにCookieを食べさせる。という設定です。

RewriteCond %{QUERY_STRING} ^(.*&)?tdstyle=sp&?(.*)$
RewriteRule (.*) $1?%1%2 [CO=wptouch-pro-view:mobile:teradas.net:0,R,L]

RewriteCond %{QUERY_STRING} ^(.*&)?tdstyle=full&?(.*)$
RewriteRule (.*) $1?%1%2 [CO=wptouch-pro-view:desktop:teradas.net:0,R,L]

前処理やリダイレクト時のレスポンスコードなどは省略してありますので適宜あんじょうよく。

Cookie 有効期限は Session です。

クエリパラメータの削除方法はこちらの以下の定義を参考にさせていただきました。(以下引用)

RewriteCond %{QUERY_STRING} ^(.*&)?(?:uid|sid|pid)=[^&]*&?(.*)?$
RewriteRule (.*) $1?%1%2 [N]

サラッと書いてありますが、諸々をある程度分かってないと完全には理解できない内容と思います。興味のある方は引用元の以下のページをご覧になるとよいでしょう。

余談

これまであまりこっち系の事は書かないようにしていたんですが、最近ちょっと考えが変わってきました。

ちなみに今回のは WPtouch のモバイル版←→デスクトップ版の切替えメカニズムを調べて遊んだ時の副産物です。が、これは邪道なので実運用上は使い物にならないと思います。

WPtouch の件とか mod_rewrite のレシピは別にまとめてもいいような気もします。

参考サイト:
mod_rewrite - Apache HTTP Server
RewriteRule Flags - Apache HTTP Server

Hatena Pocket Line

コメントを記入