Mod_rewriteを使用して、条件に基づいてCookieの値を変更することはできますか?私はHTTPを初めて使用しますが、1つまたは2つ試しました。私が知っている唯一の正規表現はPerlスタイルです。
RewriteRule s/.[0-9][0-9][0-9]/COOKIE=MSFNODE/g;
MSFNODE
は私のcookieの値です。SESSIONID
(私のcookieにもあります)です。それをターゲットとして選択する方法がわかりません。.[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