zoukankan      html  css  js  c++  java
  • 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 的修正符。

  • 相关阅读:
    代理工具介绍
    Cookie 相关
    在JavaScript 使用命名空间
    oracle rank()用法
    sql update 特殊用法
    Repeat 嵌套绑定
    .net 中隐式事务和显示事务的用法
    为站点添加迅雷下载和快车下载
    缺少MSVCR71.DLL解决方式
    关于AppFabric Caching的学习摘录
  • 原文地址:https://www.cnblogs.com/yangcclg/p/6184042.html
Copyright © 2011-2022 走看看