首页 新闻 会员 周边 捐助

Asp.net Url重写问题

0
悬赏园豆:10 [已解决问题] 解决于 2012-05-16 15:26

<RewriterRule>
  <LookFor>~/(.+)_c(.+)/(\d+).html</LookFor>
  <SendTo>~/catebig.aspx?catename=$1&amp;cateid_Bigclass=$2&amp;page=$3</SendTo>
  </RewriterRule>
  <RewriterRule>
  <LookFor>~/full/(.+)_c(.+)/(\d+).html</LookFor>
  <SendTo>~/catebigfull.aspx?catename=$1&amp;cateid_Bigclass=$2&amp;page=$3</SendTo>
  </RewriterRule>

地址栏输入:domain/aaa_c/100.html和domain/full/aaa_c/100.html都只映射到这个文件catebig.aspx,等于是第2个加了一级目录/full/不起作用?

jason2013的主页 jason2013 | 小虾三级 | 园豆:1998
提问于:2012-05-16 10:27
< >
分享
最佳答案
0

从现象来看,应该是顺序的问题导致的。不过,你有加full后,应该在第一个是匹配不通过的才对,你确认下加入full后,第一个的解析结果里的catename值是多少?难道是full/aaa?如果是这个,那么就是你的正则表达式没有写好。

收获园豆:10
无之无 | 大侠五级 |园豆:5095 | 2012-05-16 10:52

<RewriterRule>
        <LookFor>~/full/(.+)_(\d)/(.+)_(\d)/(\d+).html</LookFor>
        <SendTo>~/catebig_country_full.aspx?countryname=$1&amp;countryid=$2&amp;catename=$3&amp;cateid=$4&amp;page=$5</SendTo>
      </RewriterRule>

 

http://domain/full/Afghanistan_171/Agriculture_6/1.html

countryname得到full/Afghanistan,这样正则要怎么写才得到的是Afghanistan

 

catename

jason2013 | 园豆:1998 (小虾三级) | 2012-05-16 12:05

@wydycg: 我对这个正则表达式也用的不多,你这样,对(.+)这段增加一个控制,不能包含"\"之类的特殊字符,我记得正则表达式是可以达到这个目的的。

虽然把顺序调整后也能达到目的,但总会有点吃苍蝇的感觉,还是建议你用这个方案处理。

无之无 | 园豆:5095 (大侠五级) | 2012-05-16 12:17

@笨笨蜗牛: 非常感谢,解决了

jason2013 | 园豆:1998 (小虾三级) | 2012-05-16 15:25
其他回答(1)
0

應該 有前後 順序吧。把最細的放到 前面。

無限遐想 | 园豆:3740 (老鸟四级) | 2012-05-16 10:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册