RewriteRule ^abc/([0-9]+)/([0-9]+)([0-9]+)/([0-9]+)([0-9]+)/([0-9]+)\.html$ abc.php?id1=$1&id2=$2&id3=$3&id4=$4&id5=$5&id6=$6 如果6个参数都有,则上面的伪静态语句是没问题的。现在问题是:6个参数(id1--id6)是不确定的,有时候是id1,id2,有时候是id1,id4等,如果参数不全(id1-id6),用上面的语句是不行的,想请教如果参数不确定,这个伪静态应该怎么写?多谢

解决方案 »

  1.   

    RewriteRule ^abc/([0-9]+)\.html$ abc.php?id1=$1 [L]
    RewriteRule ^abc/([0-9]+)/([0-9]+)\.html$ abc.php?id1=$1&id2=$2 [L]
    RewriteRule ^abc/([0-9]+)/([0-9]+)([0-9]+)\.html$ abc.php?id1=$1&id2=$2&id3=$3 [L]
    RewriteRule ^abc/([0-9]+)/([0-9]+)([0-9]+)/([0-9]+)\.html$ abc.php?id1=$1&id2=$2&id3=$3&id4=$4 [L]
    RewriteRule ^abc/([0-9]+)/([0-9]+)([0-9]+)/([0-9]+)([0-9]+)\.html$ abc.php?id1=$1&id2=$2&id3=$3&id4=$4&id5=$5 [L]
    RewriteRule ^abc/([0-9]+)/([0-9]+)([0-9]+)/([0-9]+)([0-9]+)/([0-9]+)\.html$ abc.php?id1=$1&id2=$2&id3=$3&id4=$4&id5=$5&id6=$6
      

  2.   

    谢谢楼上,但你这样写会有问题,例如:我只有id1和id5,怎么办?
      

  3.   

    你这个url设计是不是应该改改
    abc/12/12345/12345/12345.html 
    这样一个url ,你能区分$2,$3,$4,$5分别是什么吗?
    但是假如加个分隔号
    abc/12/123-45/12-345/12345.html 
    就基本可以知道
    $1 -> 12
    $2 -> 123
    $3 -> 45
    ..
    ..
    ..
    而且也方便去写替换正则
      

  4.   

    可以用一条正则搞定这个事吗?还是说一定要分开,例如:$id1、$id2一条,$id1、$id4一条,这样就太麻烦了
      

  5.   

    你的格式有问题
    RewriteRule ^abc/([0-9]+)/([0-9]+)([0-9]+)/([0-9]+)([0-9]+)/([0-9]+)\.html$ abc.php?id1=$1&id2=$2&id3=$3&id4=$4&id5=$5&id6=$6

    ([0-9]+)([0-9]+) 之间没有分割符,本身就不能得到唯一结果
    12345 可分成
    1 2345
    12 345
    123 45
    1234 5
    这些都符合规则,但肯定不都是你想要的假定分隔符为 _
    则可写作
    RewriteRule ^abc/([0-9]*)/([0-9]*)_([0-9]*)/([0-9]*)_([0-9]*)/([0-9]*)\.html$ abc.php?id1=$1&id2=$2&id3=$3&id4=$4&id5=$5&id6=$6
      

  6.   

    谢谢唠叨,但是否会有这个问题。如果只有id1和id4,例如:abc.php?id1=1&id4=2用RewriteRule ^abc/([0-9]*)/([0-9]*)_([0-9]*)/([0-9]*)_([0-9]*)/([0-9]*)\.html$ abc.php?id1=$1&id2=$2&id3=$3&id4=$4&id5=$5&id6=$6 就打不开页面了。
      

  7.   

    累不?在程序直接分析下不行嘛?把所有的url变成?get=/1/2/3 程序里面分割下.不就得到$_GET[]参数嘛?