提取清单中查询参数的值

时间:2012-12-04 10:58:58

标签: regex caching varnish query-parameters

我有这个网址:

http://my.api.com/v1/{api_key}/{user_token}/?someparam=hello&force=true&someotherparam=world

其中api_keyuser_token是uuids

如何提取force查询参数的值,如果强制参数丢失或者设置为false,则从varnish缓存中查找。如果设置为true,我需要点击我的后端服务器。查询参数可以按任何顺序排列。

3 个答案:

答案 0 :(得分:2)

我建议你颠倒逻辑:

sub vcl_recv { 
    if (req.url ~ "(?i)force=(true|yes)") {
        return(pass);
    }
    // other values will fall through to the safe default VCL that will do return(lookup).
}

答案 1 :(得分:1)

与Ikarsten的答案类似,但与xxxtoken参数不匹配。

sub vcl_recv { 
    if (req.url ~ "(\?|\&)token=") {
        return(pass);
    }
}

答案 2 :(得分:-1)

在你的vcl_recv中你可以用以下内容检查不存在的force =或force = true:

 if(!req.url ~ "&|\?force=" || req.url ~ "&|\?force=true") {
     return(pass);
 }