URL重写器没有抓取完全匹配

时间:2009-11-20 18:13:26

标签: asp.net regex url-rewriting

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

所以转到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.我猜它不是完全匹配,只是某种“包含”。

如何让它进行精确匹配?

我正在使用这个用于正则表达式而不是对所有内容进行硬编码,但是没有用到eitehr:

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

谢谢你们!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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