我想实现的功能是:访问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&id=$2</to>
</rule>
但是访问 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&id=$2</to>
</rule>
<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&id=$2 </to>
</rule>个人感觉最好还是用apache这种web服务器的重写,功能比较强太,不会让应用服务器太累
<rule>
<from>/list/(.[^/]+) </from>
<to>/list/list.do?pid=$1 </to>
</rule>
<rule>
<from>/list/(.[^/]+)/(.[^/]+) </from>
<to>/list/list.do?pid=$1&id=$2 </to>
</rule>
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>