![nginx 中重写规则的替换字符串中可以有正则表达式吗](https://linux22.com/image/779771/nginx%20%E4%B8%AD%E9%87%8D%E5%86%99%E8%A7%84%E5%88%99%E7%9A%84%E6%9B%BF%E6%8D%A2%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E5%8F%AF%E4%BB%A5%E6%9C%89%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%90%97.png)
我需要一个非常特殊的重写规则,但我找不到方法来实现它。
我需要将 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
),但我找不到支持其他情况的方法。
知道怎样做吗?