规则:
<add name="Rule1" virtualUrl="^~/Shop/(\d+)/(\d+)/list_(\d+).html" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/Shop/ShopList.aspx?id=$1&sid=$2&page=$3" ignoreCase="true"/>可是参数传不过去
地址:http://localhost:1856/Shop/16/31/list_2.html
参数传的是:id=16css%2fdeo.css
<add name="Rule1" virtualUrl="^~/Shop/(\d+)/(\d+)/list_(\d+).html" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/Shop/ShopList.aspx?id=$1&sid=$2&page=$3" ignoreCase="true"/>可是参数传不过去
地址:http://localhost:1856/Shop/16/31/list_2.html
参数传的是:id=16css%2fdeo.css
=>^/Shop/(\d+)/(\d+)/list_(\d+).html
试试
你用了相对路径了对吧。
然后其实请求的是这个
<add name="Rule1" virtualUrl="^~/Shop/(\d+)/(\d+)/list_(\d+).html" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/Shop/ShopList.aspx?id=$1&sid=$2&page=$3" ignoreCase="true"/>
<add name="Rule2" virtualUrl="^~/Shop/(\d+)/list_(\d+).html" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/Shop/ShopList.aspx?id=$1&page=$2" ignoreCase="true"/> <add name="Rule3" virtualUrl="^~/Shop/(\d+)/(\d+)" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/Shop/ShopList.aspx?id=$1&sid=$2" ignoreCase="true"/>
<add name="Rule4" virtualUrl="^~/Shop/(\d+)/" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/Shop/ShopList.aspx?id=$1" ignoreCase="true"/>
<add name="Rule5" virtualUrl="^~/Shop/" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/Shop/Main.aspx" ignoreCase="true"/>
规则后面加个$
virtualUrl="^~/Shop/(\d+)$/(\d+)$/list_(\d+)$.html"
这样吗?
参数是 ShopList.aspx?id=16&sid=31%2fpage=3
参数是 ShopList.aspx?id=16&sid=31%2flist_2.html
其实在上面的规则也遇到了这个问题
<add name="Rule3" virtualUrl="^~/Shop/(\d+)/(\d+)" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/Shop/ShopList.aspx?id=$1&sid=$2" ignoreCase="true"/>
这个规则我就只能输入
Shop/16/31
输入Shop/16/31/
也会有一个%2f传递过去