You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx location正则如何匹配含动态可空前缀的/staticpath/路径?

问题原因

你原有正则匹配规则的核心问题是:

  • 分组(.*/)为必选匹配,当something为空(即访问路径为/staticpath/)时,没有对应内容匹配该分组,导致该场景匹配失败
  • 默认.*为贪婪匹配,若路径中存在多个staticpath字段时会出现非预期的匹配结果

正确匹配规则

location ~ ^/(?:.*?/)?staticpath/ {
      index  index.html index.htm;
      root   /usr/share/nginx/html/;
}

规则说明

  • ?:表示非捕获组,避免不必要的分组捕获占用服务内存
  • .*?为非贪婪匹配,仅匹配到最近的一个/为止,避免多段路径匹配异常
  • 末尾的?表示该分组可选,可适配something为空的场景,正常匹配/staticpath/路径
  • 若需要仅匹配路径以staticpath/结尾的请求,可在正则末尾添加$,即规则改为^/(?:.*?/)?staticpath/$

补充提示

如果你需要不管前面的something取值是什么,所有匹配到*/staticpath/的请求都指向同一个固定目录,不要使用root指令,替换为alias即可,示例:

location ~ ^/(?:.*?/)?staticpath/ {
      index  index.html index.htm;
      alias   /usr/share/nginx/html/staticpath/;
}

内容的提问来源于stack exchange,提问作者krishh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:24:04