2013-04-03 51 views
0

我需要重定向到一个URL,只有当cookie不匹配,像这样的URL请求:的Apache的RewriteCond与变量

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只有那么应该使用URI标记值将Apache重定向到显示的url。

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

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

回答

1

你可以通过在正则表达式中使用反向引用来做到这一点。我的帽子上面:

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

注意=只是用作一些分隔符。

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

+0

非常感谢你会尝试让你知道。 – jakstack 2013-04-05 08:20:23

+0

对我而言,非常感谢! – jakstack 2013-04-10 09:12:51