首页 > 解决方案 > 没有“解决”的 nginx 位置匹配扩展中的正则表达式

问题描述

我不是正则表达式的神,并且坚持使用复杂的位置正则表达式。

我的 nginx 配置中有一个位置块,以确保缓存图像和其他媒体。但如果 URL 中有“resolve”,则它不应匹配并跳过该块。我无法让它工作。我看过一个负面的lookbegind,但我认为我并不完全理解它是如何工作的。

这是我的块:

location ~* \.(?:css|js|gif|jpeg|jpg|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ { //caching stuff }

它应与以下 URL 匹配:

/media/cache/ps_product_admin_thumb/productimages/image.jpg

不是以下内容:

/media/cache/resolve/ps_product_admin_thumb/productimages/image.jpeg

谁能把我送到正确的方向?

标签: regexnginxnginx-location

解决方案


前瞻可能会有所帮助:

^(?!.*resolve).*\.(?:css|js|gif|jpeg|jpg|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$

(?!.*resolve)确保resolve字符串中不存在。

证明和解释


推荐阅读