Regex 如何将Nginx请求重写为具有特定模式的特定本地文件

Regex 如何将Nginx请求重写为具有特定模式的特定本地文件,regex,nginx,url-rewriting,Regex,Nginx,Url Rewriting,我在使用regexp和提取Nginx中的变量方面遇到了困难 我想在特定目录的路径中写入对包含单词/development/的文件的所有请求 /development/1.1000038/assets/css/something.css 应返回文件: /usr/share/nginx/html/public\u html/assets/css/something.css 以及: /development/1.1000038/assets/js/something.js 应返回文件: /usr/sh

我在使用regexp和提取Nginx中的变量方面遇到了困难

我想在特定目录的路径中写入对包含单词
/development/
的文件的所有请求

/development/1.1000038/assets/css/something.css

应返回文件:

/usr/share/nginx/html/public\u html/assets/css/something.css

以及:

/development/1.1000038/assets/js/something.js

应返回文件:

/usr/share/nginx/html/public\u html/assets/js/something.js

等等

只要存在
/development/
,传入请求的URL结构将始终相同。i、 e.
/development/
然后是
/(版本号)/
,最后是我希望使用的URL的实际部分

我似乎能够匹配并截获任何带有
/development/
字样的传入请求,但在提取和使用URL的其余部分时遇到了问题

任何帮助都将不胜感激

编辑:

这就是我尝试过的:

location ~ /development/(.*?)/(.*) {
   try_files /usr/share/nginx/html/public_html/$2 /dev/null;
}
我的想法是我应该匹配
/development/
部分。带有
(.*)
的版本号,然后是带有最终
(.*)

然后我假设我可以把
$2
变量用在我的
try\u文件
指令中。不幸的是,这似乎不起作用

我还尝试了匹配和使用我实际需要的零件:

location ~ /development/[A-Za-z0-9\.]+/(.*) {
        try_files /usr/share/nginx/html/public_html/$1 /dev/null;
}

我对正则表达式一点也不擅长,但在我使用的在线测试仪中,它们似乎与URL的正确部分相匹配。

通过纯粹的尝试和错误,我最终意识到我做错了什么

事实证明,
try\u files
使用
root
参数作为您尝试请求的任何文件的前缀

因此,我有效地应用了两次根路径。通过删除根路径,我上面的任何一个示例都可以很好地工作

location ~ /development/[A-Za-z0-9\.]+/(.*) {
        try_files /$1 /dev/null;
}

您在匹配整个URL或只是替换URL时有问题吗?如果这是第二件事,你应该编辑你的问题并发布你的尝试。按要求编辑。。。