nginx 中重写规则的替换字符串中可以有正则表达式吗

nginx 中重写规则的替换字符串中可以有正则表达式吗

我需要一个非常特殊的重写规则,但我找不到方法来实现它。

我需要将 uri 映射到正则表达式,再映射到用正则表达式构建的替换字符串。

例如我有一个/pdv/plan-AGE44-ABC.pdf可以映射到以下 uri:

  • /files/AGE44/plan-ABC.pdf
  • /files/AGE44/plan-ABC(version-1).pdf
  • /files/AGE44/plan-ABC(version-2).pdf
  • /files/AGE44/plan-ABC(version-3).pdf

所以(version-1)替换字符串中的部分是可选的,所以我考虑在这里使用正则表达式。

我的规则示例:

location /pdv/ {
    rewrite ^/pdv/plan-(.*)-(.*).pdf$ "/files/$1/plan-$2.pdf" last;
    return 404;
}

这支持第一种情况(/files/AGE44/plan-ABC.pdf),但我找不到支持其他情况的方法。

知道怎样做吗?

相关内容