Intelligencia URL重写问题

时间:2010-12-22 07:14:35

标签: regex url urlrewriter.net

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

重写url =“〜/ Products /(.+).aspx”to =“〜/ Products.aspx?Cat = $ 1”

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

如果我输入Products / xyz.aspx它可以很好地工作但是如果我尝试实现像Products / xyx / abc.aspx这样的第二个规则的URL,它会将xyz和abc传递给Cat而不是SubCat。任何想法我怎么能让它来处理它们?

3 个答案:

答案 0 :(得分:0)

尝试让你的正则表达式非贪婪:

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

答案 1 :(得分:0)

那是因为正则表达式匹配 greedy 。第一行中的(.+)尽可能匹配,包括xyz/abc。您问题的快速解决方法可能是更改第一个使用([^/]+)的模式(您可能必须以某种方式逃离/,具体取决于您的环境)。

答案 2 :(得分:0)

我建议删除“。”上的所有匹配项。符号,因为它会使你的比赛更难预测。而是使用任何字符模式覆盖您的产品类别和子类别。

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"