2013-04-03 50 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