【问题标题】:Varnish cache subdirectories using regex使用正则表达式清漆缓存子目录
【发布时间】:2015-08-05 02:26:06
【问题描述】:

使用 Varnish 4 我正在尝试缓存特定样式的 url:一个具有一定数量目录的 URL:

if (req.url ~ "(?Ui)^/cars/.+/.+/.+/$") {
  return(hash);
}

这应该匹配以下内容:

/cars/only/four/subdirectories/
/cars/a/b/c/

但是,它不应该匹配这些:

/cars/not/five/sub/directories/
/cars/not/four/and/some.html
/cars/not/three/
/cars/not_two/

但是,我的代码似乎可以匹配任何带有尾随 / (实际上是 ^/cars/.*/$ 的内容。我哪里错了?

编辑:进一步测试,我对“有效”部分的看法是错误的。它似乎匹配四个或更多目录 - 仅以尾随 / 结尾的目录

【问题讨论】:

  • 第二个列表匹配的是什么?除了some.html之外的所有?
  • 匹配/cars/not/five/sub/directories/

标签: regex varnish varnish-vcl


【解决方案1】:

您似乎试图使. 匹配除/ 之外的任何内容,因此以这种方式定义它是有意义的:

"(?Ui)^/cars/[^/]+/[^/]+/[^/]+/$"

否则,它匹配任何内容(包括/)。

【讨论】:

  • 我可以发誓我尝试了一些类似的方法,但这非常有效。谢谢!
猜你喜欢
  • 2018-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-25
  • 1970-01-01
  • 2014-12-30
  • 2013-03-26
相关资源
最近更新 更多