我需要仅在cookie与URL请求不匹配时重定向到URL:
URI: http://mywebsite/myapp/myservice/my123token
COOKIE: MYCOOKIE=my456token
RewriteCond %{REQUEST_URI} .*/myservice/(.*)
RewriteCond %{HTTP_COOKIE} .*MYCOOKIE="(.*);?.*
RewriteRule .* http://mywebsite/myapp/myservice/%1
所发生的事情是传入的请求带有令牌 my123token ,但cookie只有令牌 my456token ,然后Apache才会使用URI令牌值重定向到显示的URL。
所以问题是如何实现第二个条件,以便仅在令牌不匹配时应用重写规则。
我觉得这会以某种方式涉及使用变量但不确定如何,请帮助。非常感谢!
答案 0 :(得分:1)
您可以在正则表达式中使用反向引用来完成此操作。我最重要的是:
RewriteCond %{HTTP_COOKIE} .*MYCOOKIE=(.*);?.*
RewriteCond $1=%1 !^(.*)=\1$
RewriteRule myapp/myservice/(.*) /myapp/myservice/%1 [L,R=302]
注意=
仅用作某个分隔符。
PS。我从rewriteCond中删除了"
,因为您的cookie似乎不包含任何内容。