views:

86

answers:

2

I'm implementing some url rewriting using UrlRewriter.

So going to http://domainname/11

will go to ~/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>

The problem here is 11 always redirects to 1. Same as 400 redirects to 4. I'm guessings it's not doing an exact match, only some sort of "Contains".

How do I get this to do exact matching?

I was using this for regex to not hard code everything but that didnt work eitehr:

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

thanks guys!

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

You should specify end of the URL and use a quantifier for your \d expression to allow more than one digit:

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