我的应用程序基于4个唯一的URL参数生成页面,我正在尝试使用varnish来缓存页面。这种情况有点不寻常,因为我无法控制传递给我的应用程序的URL参数的数量或顺序。凭借我有限的正则表达式技能和谷歌搜索能力,我找到了一个匹配我想要的参数的解决方案:
[&|?](?:Param1|Param2|Param3|Param4)=[^&\s]+
但是由于VCL的限制,我需要完全相反:
Match any URL parameters that are not Param1, Param2, Param3 or Param4.
然后从网址中删除,根据网址设置hash_data,转发到我的后端,我应该是金色的。
我希望有正规经验的人可以分享解决方案,或指出我正确的方向。谢谢。
答案 0 :(得分:2)
这听起来像是negative lookahead assertions,与(?!...)
一起使用。我不知道你的参数是什么样的,所以我猜到[\w\d]+
。
[&|?](?!Param1|Param2|Param3|Param4)[\w\d]+=[^&\s]+