rewrite规则中参数多于9个的处理方式 apache nginx

RewriteRule ^index-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)(.*)$ $9&&a=$1&a2=$2&a3=$3&a4=$4&a5=$5&a6=$6&a7=$7&a8=$8 [C,NC]

----第一部分
RewriteRule ^-([0-9]+)-([0-9]+)\.html&&(.*) index\.php\?$3&a9=$1&a10=$2 [QSA,L,NC]

----第二部分

可见10个参数被分成了两条紧密相连的规则最终把静态地址1指向了动态地址2,为什么不能写成一条呢,因为apache rewrite不支持超过9个参数。注意,后面的[C,NC] 相当于修正符,C代表规则链条(chain)未结束,需要拼接下一条规则 L(last) 说明规则结束。需要指出的是“$9&&” ,意思是把第9个括号匹配到的内容(即剩下的2个参数值)连同已经匹配到的8个参数值作为第二条规则的被匹配的对象。

 

rewrite ^/index-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-(?P<f>[0-9]+)(.*).html /index.php?a=$1&a2=$2&a3=$3&a4=$4&a5=$5&a6=$6&a7=$7&a8=$8&a9=$9&a10=$f last;

 注意第10个参数f 通过?P<f>重命名为f ,当然也可以是其他名字,$f也要改成一致的就行了,如果有第11个参数o3,则在f?(?P<f>[0-9,]*)后面添加o?(?P<j>\d*)即可,对应的a10=$f 后面也要加&a11=$j。nginx 没有类似于apache 的修正符。

转载于:https://www.cnblogs.com/yangcclg/p/6184042.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值