NGINX-如何提供以 uri 最后一段开头的文件名的文件?

NGINX-如何提供以 uri 最后一段开头的文件名的文件?

我的服务器上的一个文件夹中有许多 PDF \drawings。文件名结构为:8 位数字、下划线、修订级别字母——即\d{8}_[A-Za-z]\.pdf。这些文件组织在与文件名的前 4 位数字匹配的子文件夹中——\drawings\1500\等等\drawings\1600\

我希望用户能够在浏览器中调用绘图,不知道 REV 级别,仅使用前 8 位数字。例如

intranet.com/drawings/15003915 -> Z:\drawings\1500\15003915_D.pdf

intranet.com/drawings/16000423 -> Z:\drawings\1600\16000423_B.pdf

nginx.conf,我有以下内容

location ^~ /drawings/ {
  try_files $uri @redirect;
}

location @redirect {
  if ($uri ~* "^/(\d{8})$") {
    set $filename $1;
    rewrite ^/(.*)$ Z:/Drawings/${$uri:1:4}/$filename_[A-Z].pdf last;
  }
  return 404;
}

NGINX 正则表达式总是让我困惑。我不断收到错误rewrite

有什么解决办法吗?

相关内容