帶問號的url重定向和引數保留--nginx rewrite
阿新 • • 發佈:2018-12-25
栗子:
http://host/demo/sub/z10?x=95&y=27=>http://host/demo/sub/10/95_27.png
問題:
1、重定向前url帶有問號,且需要保留問號後的引數;
2、重定向後的引數以下劃線連線。
解決:
http://host/demo/sub/z10?x=95&y=27=>http://host/demo/sub/10/95/27=>http://host/demo/sub/10/95_27.png
1、nginx rewrite正則匹配不會匹配問號後的引數,因此需要使用$arg_{引數名}來保留引數,且匹配規則要以問號結尾;
但如果直接重定向到最終結果,兩個引數之間用下劃線連線,會造成引數解析錯誤,因此第一步先去掉問號,生成中間結果:
rewrite ^/(\w+)/(\w+)/z(\d+) /$1/$2/$3/$arg_x/$arg_y? permanent;
2、第一步重定向去掉了問號,下面只需要正則匹配引數就ok了:
rewrite ^/(\w+)/(\w+)/(\d+)/(\d+)/(\d+) /$1/$2/$3/$4_$5.png permanent;