Regex 如何在Nginx重写模块中通过正则表达式提取url的参数?

Regex 如何在Nginx重写模块中通过正则表达式提取url的参数?,regex,nginx,rewrite,Regex,Nginx,Rewrite,我有这个网址: http://127.0.0.1:8085/test2/Y2hpc3Rh?sx=MTU5OQ==&sy=MTk4&sz=MTg= 我想把它改写成: /tms/$1/$2/$3/$4.png; 我有一个正则表达式: rewrite /[\w]+/([\w\d]*)?[\w]+[\w]+=([\w\d=]*) /tms/$1/$2.png; 它的工作原理应该是:/tms/Y2hpc3Rh/MTU5OQ.png,但它不是。Nginx找不到组。这里有什么问题?试试这

我有这个网址:

http://127.0.0.1:8085/test2/Y2hpc3Rh?sx=MTU5OQ==&sy=MTk4&sz=MTg=
我想把它改写成:

/tms/$1/$2/$3/$4.png;
我有一个正则表达式:

rewrite /[\w]+/([\w\d]*)?[\w]+[\w]+=([\w\d=]*) /tms/$1/$2.png;
它的工作原理应该是:
/tms/Y2hpc3Rh/MTU5OQ.png
,但它不是。Nginx找不到组。这里有什么问题?

试试这个:

rewrite ^/\w+/(\w*)/?$ /tms/$1/$arg_sx/$arg_sy/$arg_sz.png;
Nginx没有将查询字符串包含在
rewrite
的匹配中。您可以通过
$arg\u name
按名称访问参数

\w
相当于
[A-Za-z0-9\
,因此它包括数字。

未测试

http://[^/]+/[^/]+/([^?]+)[^=]+=([^=]+)=.* 

/tms/$1/$2.png