nginx下rewrite规则中参数超过10 $10 解决方案
最近在配置nginx时发生超过9个参数之后取不到值的情况。
参考如下:
http://www.pingshili.com/blog-2-17.html
最后解决,选取重新命名的方式。
这是nginx的rewrite的一个bug,只能获取到$9,再往外全部不能获取到!
生产需求:
rewrite "^/([\w]{0,})-([0-9]{4})-([0-9]{2})-([0-9]{2})-([0-9]{2})-([0-9]{0,2})([A-Za-z0-9]{2,34})-([\w]{0,})-([0-9]{0,})\.?(gif|jpg|jpeg|png)$" /$1-$2-$3-$4-$5-$6$7-$8-$9.$10 last;
死活获取不到$10的值。
死活google之!gogole.com.hk不给力搜索不到,google之!
最后在nginx的官方论坛找到别人碰到的同样问题及牛人给出的解决方法,膜拜下!
截图如下:
解决方法:
Nginx的不支持$10和$11,但你可以使用命名捕获
我们用$n0代替$10来实现功能
写法如下:
rewrite "^/([\w]{0,})-([0-9]{4})-([0-9]{2})-([0-9]{2})-([0-9]{2})-([0-9]{0,2})([A-Za-z0-9]{2,34})-([\w]{0,})-([0-9]{0,})\.?(?<n0>gif|jpg|jpeg|png)$" /$1-$2-$3-$4-$5-$6$7-$8-$9.$n0 last;
使用方法:
在你的$10正则括号内加入?<n0>
如:
\.?(gif|jpg|jpeg|png)$
改为
\.?(?<n0>gif|jpg|jpeg|png)$
同理:$11可以换乘$n1,以此类推!
继续在nginx的海洋中畅游!