@starkeenと一致する必要があります:私は私がするRewriteCond%1を使用することができることを知らなかった、それが唯一のRewriteRuleのためだと思いました。あなたの答えは完全に2つの事のために実行されます:
A. Regex。
ケース1:%{HTTP_COOKIE}はこのような状況で3例を有することができる文字列であるDIR = ABC - あなたの正規表現は
ケース2動作:DIR = ABCを、 cookie1 = v1 - Rexexが動作しない
ケース3:cookie1 = v1; dir = abc; cookie2 = v2 - あなたのRexexは機能しません。
また重要です:dir_save = v1; x_dir = v2; dir = absなので、
RewriteCond %{HTTP_COOKIE} ^.*dir=(.*).*$
のいずれも機能しません。
[NEWLINE]または '; [SPACE]'で始まり、[LINE-END]または ';'で終わります。
RewirteCond %{HTTP_COOKIE} (^|;\)dir=(.*)(;|$)
RewriteCond %2 -d
RewriteRule ^(.*)$ example.com [R]
B.また、空白または '\'または '。'のようなCookieディレクトリの奇妙な値を確認します。または '.. \'などです。原因のWindowsでは「\」...
RewirteCond %{HTTP_COOKIE} (^|\ ;)dir=(.*)(;|$)
# must be a directory
RewriteCond %2 -d
# must not be empty
RewriteCond %2 !^$
# must not contain dot
RewriteCond %2 !^.*\..*$
# must not contain/
RewriteCond %2 !^.*/.*$
# must not contain \
RewriteCond %2 !^.*\\.*$
RewriteRule ^(.*)$ example.com [R]
@all:自分の質問に答えるために残念ともそんなに厳しいもののため申し訳ありません(また、starkeenは私が気付いていなかった重要な部分を示しました)正規表現と奇妙なクッキーの値がありますが、最悪の場合にはこのようなことは時間を浪費します。私はすでにそのような間違いを犯し、難しい方法を学んだ。