使用HttpModule的Rewrite组件,例如,有如下三种情况(1) product.aspx?class=3
重写问product-3.aspx
(2) product.aspx?class=3&page=2
重写问product-3-2.aspx
(3) product.aspx?page=3
重写问product-3.aspx
问题就是,当遇到product-3.aspx这样的参数时,接收页无法判断到底应该是product.aspx?class=3还是product.aspx?page=3这个不知道大家都是如何解决的呢?
附上urls.config文件内容。 <rewrite name="test1"
path="/product{0}.aspx"
pattern = "/product-(\d+).aspx"
page="~/product.aspx"
querystring="page=$3" /> <rewrite name="test2"
path="/product{0}.aspx"
pattern = "/product-(\d+).aspx"
page="~/product.aspx"
querystring="class=$3" /> <rewrite name="test3"
path="/product.aspx"
pattern = "/product-(\d+)(-(\d+))?.aspx"
page="~/product.aspx"
querystring="class=$1^page=$3" />
重写问product-3.aspx
(2) product.aspx?class=3&page=2
重写问product-3-2.aspx
(3) product.aspx?page=3
重写问product-3.aspx
问题就是,当遇到product-3.aspx这样的参数时,接收页无法判断到底应该是product.aspx?class=3还是product.aspx?page=3这个不知道大家都是如何解决的呢?
附上urls.config文件内容。 <rewrite name="test1"
path="/product{0}.aspx"
pattern = "/product-(\d+).aspx"
page="~/product.aspx"
querystring="page=$3" /> <rewrite name="test2"
path="/product{0}.aspx"
pattern = "/product-(\d+).aspx"
page="~/product.aspx"
querystring="class=$3" /> <rewrite name="test3"
path="/product.aspx"
pattern = "/product-(\d+)(-(\d+))?.aspx"
page="~/product.aspx"
querystring="class=$1^page=$3" />
www.xxxx.com/product.aspx?class=1
还是
www.xxxx.com/product.aspx?page=1这根本就是有歧义的。或许可以用product-1.aspx 和 product_1.aspx来区分但过有更多的参数就无能为力了,真是为难。不知道有什么更好的办法,请赐教
谢谢您的提示。确实找到了解决办法。在数字前加上字母来区分,如下
<rewrite name="test1"
path="/product{0}.aspx"
pattern = "/product-p(\d+).aspx"
page="~/product.aspx"
querystring="page=$3" /> <rewrite name="test2"
path="/product{0}.aspx"
pattern = "/product-c(\d+).aspx"
page="~/product.aspx"
querystring="class=$3" />就是URL看起来很奇怪,成了product-1-p1.aspx这样的。