mod_rewriteでcookieをURIへ変換する
cookie値+URIでレスポンスがユニークになるというアプリケーションがあって、これをどうしてもSquidでキャッシュさせたい。SquidはURI(クエリ文字列を含む)だけをキーにしてキャッシュするので、cookie値をURIへつけてやればいい。
ということでこんな感じ。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_COOKIE} PHPSESSID=([^;][^;]*); RewriteRule (.*) $1?sess=%1 </IfModule>
ところで上記ではセッションIDだけ抜き出してURIへ展開していますが、これを実現するときにいろいろ試していて、%{HTTP_COOKIE}などRewriteCondで指定できる%{HOGE}の値はそのままRewriteRuleへ書けることを発見。こんな感じ。
RewriteCond %{HTTP_COOKIE} PHPSESSID RewriteRule (.*) $1&%{HTTP_COOKIE}
これは知らなかった。