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的海洋中畅游!