web-dev-qa-db-ja.com

条件付きでCookieを編集するmod_rewrite

Mod_rewriteを使用して、条件に基づいてCookieの値を変更することはできますか?私はHTTPを初めて使用しますが、1つまたは2つ試しました。私が知っている唯一の正規表現はPerlスタイルです。

RewriteRule s/.[0-9][0-9][0-9]/COOKIE=MSFNODE/g;
  1. MSFNODEは私のcookieの値です。
  2. 正規表現を実行したいのはSESSIONID(私のcookieにもあります)です。それをターゲットとして選択する方法がわかりません。
  3. 正規表現が示すように、.[0-9][0-9][0-9]MSFNODEと呼ばれるcookie値に置き換えますただし、MSFNODEが存在する場合のみ!

COOKIE=MSFNODEはこれを行う正しい方法ですか?また、MSFNODEが存在する場合にのみこれが発生するようにします—現状では、MSFNODEが存在しない場合は書き換えルールに従わずにそのまま通過しますか?

ここでは、最も基本的な正規表現でさえ欠陥があるように感じます。

RewriteCond%{HTTP_COOKIE} を使用して、Cookieの存在を取得/検出/確認できます。

RewriteRule フラグでCookie値を設定します cookie | CO 構文は[CO=NAME:VALUE:DOMAIN:lifetime:path:secure:httponly]

両方を一緒にした例:

RewriteCond %{HTTP_COOKIE} cookiekey=cookievalue [NC]
RewriteRule ^(.*)$ /$1 [L,CO=cookiekey:NewCookieValue:mydomain.com:86400:/]

上の例では、cookiekeyの値がcookievalueの場合にのみリダイレクトが発生します。 cookievalue RewriteCondで正規表現を使用することもできます。

その他の例(ユーザーのコメントも読む): http://www.askapache.com/htaccess/htaccess-fresh.html#Cookie_Manipulation_Tests_mod_rewrite

4