带有变量的Apache RewriteCond

时间:2013-04-03 18:59:52

标签: apache variables mod-rewrite

我需要仅在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。

所以问题是如何实现第二个条件,以便仅在令牌不匹配时应用重写规则。

我觉得这会以某种方式涉及使用变量但不确定如何,请帮助。非常感谢!

1 个答案:

答案 0 :(得分:1)

您可以在正则表达式中使用反向引用来完成此操作。我最重要的是:

RewriteCond %{HTTP_COOKIE} .*MYCOOKIE=(.*);?.*
RewriteCond $1=%1 !^(.*)=\1$
RewriteRule myapp/myservice/(.*) /myapp/myservice/%1 [L,R=302]

注意=仅用作某个分隔符。

PS。我从rewriteCond中删除了",因为您的cookie似乎不包含任何内容。