代码之家  ›  专栏  ›  技术社区  ›  Jack Marchetti

URL重写器无法获取精确匹配

  •  1
  • Jack Marchetti  · 技术社区  · 15 年前

    我正在使用UrlRewriter实现一些url重写。

    那你要去吗 http://domainname/11

    将转到~/Items/Details。aspx?Itemid=11

      <rewriter>
        <rewrite url="~/1" to="~/Items/Details.aspx?ItemId=1" />
        <rewrite url="~/2" to="~/Items/Details.aspx?ItemId=2" />
        <rewrite url="~/3" to="~/Items/Details.aspx?ItemId=3" />
        <rewrite url="~/11" to="~/Items/Details.aspx?ItemId=11" />
      </rewriter>
    

    这里的问题是11总是重定向到1。与400重定向到4相同。我猜这不是一个精确的匹配,只是某种“包含”。

    我怎样才能让它精确匹配?

    我用它来为regex编写代码,不是为了硬编码所有的东西,但这并不管用:

    <rewriter>
        <rewrite url="~/(\d)" to="~/Items/Details.aspx?ItemId=$1" />
    </rewriter>
    

    谢谢大家!

    2 回复  |  直到 15 年前
        1
  •  1
  •   Gumbo    15 年前

    您应该指定URL的结尾,并为您的URL使用量词 \d 表达式允许多个数字:

    <rewriter>
        <rewrite url="~/(\d+)$" to="~/Items/Details.aspx?ItemId=$1" />
    </rewriter>
    
        2
  •  0
  •   Tomalak    15 年前
    <rewrite url="~/(\d+)" to="~/Items/Details.aspx?ItemId=$1" />
    -------------------^