首页 新闻 会员 周边

URL重写规则中包含多个汉字的正则?

0
悬赏园豆:20 [待解决问题]

开发工具VS2010
目标框架2.0

使用UrlRewriter进行重写的时候。有个页面参数很多。大概列出六个。正则有点搞不清楚了。忘大神指教

<add virtualUrl="~/p-(\d+).html" destinationUrl="~/productlist.aspx?brand=$1" />
      <add virtualUrl="~/p-(\d+)-(\d+).html" destinationUrl="~/productlist.aspx?brand=$1&amp;prosex=$2" />
      <add virtualUrl="~/p-(\d+)-(\d+)-(\d+).html" destinationUrl="~/productlist.aspx?brand=$1&amp;prosex=$2&amp;procrowd=$3" />
      <add virtualUrl="~/p-(\d+)-(\d+)-(\d+)-(.*).html" destinationUrl="~/productlist.aspx?brand=$1&amp;prosex=$2&amp;procrowd=$3&amp;color=$4" />
      <add virtualUrl="~/p-(\d+)-(\d+)-(\d+)-(.*)-([a-z_])\.html" destinationUrl="~/productlist.aspx?brand=$1&amp;prosex=$2&amp;procrowd=$3&amp;color=$4&amp;orderby=$5" />
      <add virtualUrl="~/p-(\d+)-(\d+)-(\d+)-(.*)-([a-z_])-(.*)\.html" destinationUrl="~/productlist.aspx?brand=$1&amp;prosex=$2&amp;procrowd=$3&amp;color=$4&amp;orderby=$5&amp;key=$6" />

 

这个产品页面。包括了前面三个参数是数字类型的,

后面三个参数
color=汉字
orderby=字母+下划线
key=转义后的搜索条件( 用户输入的,如:%E6%87%92%E4 )

我这样写怎么着都不对。
比如我访问:http://localhost:81/p-1-1-2-红色-new.html

按理说应该是访问的实际页面是
productlist.aspx?brand=1&prosex=1&procrowd=2&color=红色&orderby=new
才对啊

可是我页面输出的完整内容却是
productlist.aspx?brand=1&prosex=1&procrowd=2&color=红色-new

就是后面两个参数并成一个了。

求指导!

黑武飞翔的主页 黑武飞翔 | 初学一级 | 园豆:187
提问于:2014-07-18 11:02
< >
分享
所有回答(1)
0

你把红色escape一下呢,编码一下。

Alex_QY1987 | 园豆:1888 (小虾三级) | 2014-07-18 13:20

如果对参数进行转义的话。那正则是不是也要改了呀?

支持(0) 反对(0) 黑武飞翔 | 园豆:187 (初学一级) | 2014-07-18 15:15

@黑武飞翔: 不用吧,试下先。看下效果。

支持(0) 反对(0) Alex_QY1987 | 园豆:1888 (小虾三级) | 2014-07-18 15:19

@Alex_QY1987: 

还是一样的。

 

页面的请求地址变成

productlist.aspx?brand=1&prosex=1&procrowd=2&color=%e7%ba%a2%e8%89%b2-new&

支持(0) 反对(0) 黑武飞翔 | 园豆:187 (初学一级) | 2014-07-18 16:01

@黑武飞翔: 看样子像是匹配到上面的正则表达式了

<add virtualUrl="~/p-(\d+)-(\d+)-(\d+)-(.*).html" destinationUrl="~/productlist.aspx?brand=$1&amp;prosex=$2&amp;procrowd=$3&amp;color=$4" />

把这个重写的规划的位置放到下面去。。

      <add virtualUrl="~/p-(\d+)-(\d+)-(\d+)-(.*)-([a-z_])\.html" destinationUrl="~/productlist.aspx?brand=$1&amp;prosex=$2&amp;procrowd=$3&amp;color=$4&amp;orderby=$5" />

这个放到上面去。

 

用UrlRewriter的时候有个原则就是要把长的规则放上面,短的规则放下面。这样在匹配的时候才能先从长的规则开始判断。

支持(0) 反对(0) Alex_QY1987 | 园豆:1888 (小虾三级) | 2014-07-22 10:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册