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