Regex Intelligencia URL重写问题

Regex Intelligencia URL重写问题,regex,url,urlrewriter.net,Regex,Url,Urlrewriter.net,我在我的web.config中创建了两个url重写规则,如下所示: 将url=“~/Products/(.+).aspx”重写为=“~/Products.aspx?Cat=$1” 将url=“~/Products/(.+)/(.+).aspx”重写为=“~/Products.aspx?Cat=$1&SubCat=$2” 如果我输入Products/xyz.aspx,它工作得很好,但是如果我尝试一个实现第二个规则的url,比如Products/xyz/abc.aspx,它会将xyz和abc传递给C

我在我的web.config中创建了两个url重写规则,如下所示:

将url=“~/Products/(.+).aspx”重写为=“~/Products.aspx?Cat=$1”

将url=“~/Products/(.+)/(.+).aspx”重写为=“~/Products.aspx?Cat=$1&SubCat=$2”


如果我输入Products/xyz.aspx,它工作得很好,但是如果我尝试一个实现第二个规则的url,比如Products/xyz/abc.aspx,它会将xyz和abc传递给Cat,而不是SubCat。有什么办法可以让它同时处理这两个问题吗?

试着让你的正则表达式不贪婪:

rewrite url="~/Products/(.+?)/(.+).aspx" to="~/Products.aspx?Cat=$1&SubCat=$2"
                           ^

这是因为正则表达式匹配是贪婪的。第一行中的
(.+)
尽可能匹配,包括
xyz/abc
。您的问题的快速解决方法可能是将第一个模式改为使用
([^/]+)
(根据您的环境,您可能必须以某种方式避开
/

我建议删除“.”符号上的所有匹配项,因为这将使您的匹配项更难预测。相反,使用涵盖产品类别和子类别的任何字符模式

rewrite url="~/Products/([a-zA-Z0-9]+).aspx" to="~/Products.aspx?Cat=$1"

rewrite url="~/Products/[a-zA-Z0-9]+)/[a-zA-Z0-9]+).aspx" to="~/Products.aspx?Cat=$1&SubCat=$2"

嗨,Ben,你能不能给我举个例子,说明url重写是什么样子的,因为正则表达式不是我的强项之一。谢谢