开发工具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&prosex=$2" /> <add virtualUrl="~/p-(\d+)-(\d+)-(\d+).html" destinationUrl="~/productlist.aspx?brand=$1&prosex=$2&procrowd=$3" /> <add virtualUrl="~/p-(\d+)-(\d+)-(\d+)-(.*).html" destinationUrl="~/productlist.aspx?brand=$1&prosex=$2&procrowd=$3&color=$4" /> <add virtualUrl="~/p-(\d+)-(\d+)-(\d+)-(.*)-([a-z_])\.html" destinationUrl="~/productlist.aspx?brand=$1&prosex=$2&procrowd=$3&color=$4&orderby=$5" /> <add virtualUrl="~/p-(\d+)-(\d+)-(\d+)-(.*)-([a-z_])-(.*)\.html" destinationUrl="~/productlist.aspx?brand=$1&prosex=$2&procrowd=$3&color=$4&orderby=$5&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
就是后面两个参数并成一个了。
求指导!
你把红色escape一下呢,编码一下。
如果对参数进行转义的话。那正则是不是也要改了呀?
@黑武飞翔: 不用吧,试下先。看下效果。
@Alex_QY1987:
还是一样的。
页面的请求地址变成
productlist.aspx?brand=1&prosex=1&procrowd=2&color=%e7%ba%a2%e8%89%b2-new&
@黑武飞翔: 看样子像是匹配到上面的正则表达式了
<add virtualUrl="~/p-(\d+)-(\d+)-(\d+)-(.*).html" destinationUrl="~/productlist.aspx?brand=$1&prosex=$2&procrowd=$3&color=$4" />
把这个重写的规划的位置放到下面去。。
<add virtualUrl="~/p-(\d+)-(\d+)-(\d+)-(.*)-([a-z_])\.html" destinationUrl="~/productlist.aspx?brand=$1&prosex=$2&procrowd=$3&color=$4&orderby=$5" />
这个放到上面去。
用UrlRewriter的时候有个原则就是要把长的规则放上面,短的规则放下面。这样在匹配的时候才能先从长的规则开始判断。