使用正则表达式清漆缓存子目录

Varnish cache subdirectories using regex

使用 Varnish 4 我正在尝试缓存 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/.*/$ 匹配。我哪里错了?

编辑:一些进一步的测试,我对 'effectively' 部分是错误的。它似乎匹配四个或更多目录 - 只有那些以 /

结尾的目录

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

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

否则,它匹配任何东西(包括/)。