先來看看個rewrite的配置
rewrite ^/test/para(-a(\d+))?(-b(\d+))?(-c(\d+))?(-d(\d+))?(-e(\d+))?(-f(\d+))?(-g(\d+))?\.html$
/web/target.jsp?a=$2&b=$4&c=$6&d=$8&e=$10&f=$12&g=$14;
請求URI: /zhuangxiu/q-a1-b2-c3-d4-e5-f6-p7.html
提問:target.jsp裏經過request.getQueryString()獲取到的是什麼?
理論及指望:a=1&b=2&c=3&d=4&e=5&f=6&g=7
實際:a=1&b=2&c=3&d=4&e=-a10&f=-a12&g=-a14
解決方案: html
rewrite ^/test/para(-a(\d+))?(-b(\d+))?(-c(\d+))?(-d(\d+))?(-e(?<ys>\d+))?(-f(?<yt>\d+))?(-p(?<pg>\d+))?\.html$
nginx
/web/target.jsp?a=$2&b=$4&c=$6&d=$8&e=$ys&f=$yt&g=$pg;
這個是因爲nginx是不支持rewrite參數超過10個的
web
若是瞭解named capturing group的同窗就很清楚了,後面再簡單介紹下named capturing group。 jsp