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

时间:2014-03-04 09:48:17

标签: 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找不到这些组。这有什么问题?

2 个答案:

答案 0 :(得分:3)

试试这个:

rewrite ^/\w+/(\w*)/?$ /tms/$1/$arg_sx/$arg_sy/$arg_sz.png;

Nginx在rewrite的匹配项中不包含查询字符串。您可以通过$arg_name按名称访问参数。

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

答案 1 :(得分:0)

未测试

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

/tms/$1/$2.png