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 的修正符。

  • 相关阅读:
    Design Pattern: Gof
    ZT --- extern "C"用法详解 2010-08-21 19:14:12
    OCR
    Linux strace命令
    wireshark esp
    https://sourceware.org/gdb/onlinedocs/gdb/Forks.html
    12306网上买火车票选择上中下铺的方法
    gdb调试有fork的程序
    named piped tcp proxy
    bash 提示用户输入 choice
  • 原文地址:https://www.cnblogs.com/yangcclg/p/6184042.html
Copyright © 2011-2022 走看看