mod_rewriteでcookieをURIへ変換する

cookie値+URIでレスポンスがユニークになるというアプリケーションがあって、これをどうしてもSquidでキャッシュさせたい。SquidURI(クエリ文字列を含む)だけをキーにしてキャッシュするので、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}

これは知らなかった。