我想实现的功能是:访问list/aaaa  真实地址是list/list.do?pid=aaaa   通过下面的配制文件这个功能实现了
但是访问 list/aaaa/bbbb 真实地址是list/list.do?pid=aaaa&id=bbbb  有问题,取出来的id值是对的,但是对pid的值就不对了,变成了"list.do?pid=aaaa"
是不是通过第二个规则后又运行了第一个规则呀
配制文件
        <rule>
    <from>/list/(.[^/]</from> 
    <to>/list/list.do?pid=$1</to> 
</rule>
        <rule>
    <from>/list/(.[^/]/(.[^/]</from> 
    <to>/list/list.do?pid=$1&amp;id=$2</to> 
</rule>

解决方案 »

  1.   

    句点(.)匹配除换行符以外的任意字符,可能/也被匹配了吧。用、w试一试。或者少了个括号
    <rule> 
        <from>/list/(\w[^/])</from> 
        <to>/list/list.do?pid=$1</to> 
    </rule>
    <rule> 
        <from>/list/(\w[^/])/(\w[^/])</from> 
        <to>/list/list.do?pid=$1&amp;id=$2 </to> 
    </rule>个人感觉最好还是用apache这种web服务器的重写,功能比较强太,不会让应用服务器太累
      

  2.   

    [^/]这个就把“/”除外了,上面的配置超谈好少写了,应该是下面的
      <rule> 
        <from>/list/(.[^/]+) </from> 
        <to>/list/list.do?pid=$1 </to> 
    </rule> 
            <rule> 
        <from>/list/(.[^/]+)/(.[^/]+) </from> 
        <to>/list/list.do?pid=$1&amp;id=$2 </to> 
    </rule>
      

  3.   

    我用apache实验了一下,是第一条把第二条规则屏蔽了。修改了一下,凑合用,下面是我的apache urlrewrate日志
    127.0.0.1 - - [05/Jan/2009:12:16:41 +0800] [www.cungo.com/sid#6ddd80][rid#14eea00/initial] (2) init rewrite engine with requested uri /cungo/list/aaaa/bbbb
    127.0.0.1 - - [05/Jan/2009:12:16:41 +0800] [www.cungo.com/sid#6ddd80][rid#14eea00/initial] (2) rewrite '/cungo/list/aaaa/bbbb' -> '/cungo/list.do?pid=aaaa&id=bbbb'
    127.0.0.1 - - [05/Jan/2009:12:16:41 +0800] [www.cungo.com/sid#6ddd80][rid#14eea00/initial] (2) forcing '/cungo/list.do' to get passed through to next API URI-to-filename handler
    说明从/cungo/list/aaaa/bbbb,转换到了/cungo/list.do?pid=aaaa&id=bbbb'
    我的配置是
    RewriteRule ^/cungo/list/(.[^/]+)$  /cungo/list.do?pid=$1 [PT]
    RewriteRule ^/cungo/list/(.[^/]+)/(.[^/]+)   /cungo/list.do?pid=$1&id=$2 [PT]
    对于你用的这个java类型的rewrite是一样的
    在第一条规则后加上“$”,即:
    <rule> 
        <from>/list/(.[^/]+)$ </from> 
        <to>/list/list.do?pid=$1 </to> 
    </rule> 
      

  4.   

    “$”当然是结束标记。“这办法带来一个问题是连图片什么的都使用这个规则了”这句没看懂,是不能显示图片吗?如果是,你这样把一个jsp或者action映射到其他目录,当然会有问题,相当于一个foword,不是我这个办法本身的问题.可以映射到和jsp一个目录