如何在Varnish正则表达式中插入变量?
Varnish正则匹配中嵌入变量的正确语法
- 你当前的写法错误在于直接将变量
req.http.yearMonthDay放在字符串字面量内,VCL不会解析这个变量,只会把它当作普通字符串进行匹配。 - 正确的做法是使用VCL的字符串拼接操作符
+,把正则的固定部分和变量拼接起来,示例如下:
if (req.url !~ "slreturn=" + req.http.yearMonthDay) { // 这里编写你的业务逻辑 }
- 如果需要更复杂的正则规则,比如匹配变量值后跟随任意字符,同样可以通过拼接实现:
if (req.url !~ "slreturn=" + req.http.yearMonthDay + ".*") { // 这里编写你的业务逻辑 }
- 额外提醒:建议先判断变量
req.http.yearMonthDay是否存在且有有效值,避免因变量为空导致正则匹配异常:
if (req.http.yearMonthDay && req.url !~ "slreturn=" + req.http.yearMonthDay) { // 这里编写你的业务逻辑 }
内容的提问来源于stack exchange,提问作者Kari
相关产品推荐
相关产品推荐

