Regex 如何将Nginx请求重写为具有特定模式的特定本地文件
我在使用regexp和提取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
/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时有问题吗?如果这是第二件事,你应该编辑你的问题并发布你的尝试。按要求编辑。。。