asp.net url基于部分url重写?

时间:2012-10-09 12:54:16

标签: asp.net url-rewriting

目前我的网址看起来像这样:
www.mysite.com/venues/<venueid>/<venuename>
例如
www.mysite.com/venues/342/myvenue

通过检查“场地”的出现很容易为此创建重写网址

<rule name="view venue">
<match url="^venues/([0-9]+)?/??([a-zA-Z0-9-]+)?$" />
<action type="Rewrite" url="locationdetails.aspx?id={R:1}" />
</rule>

但对于一个新网站,我希望我的网址看起来像这样:
    www.mysite.com/<venuename>-<venueid>
例如
  www.mysite.com/myvenue-342

我虽然创建了重写规则,用于检查网址中的数字并将其用作地点ID,但如果场地venuename和此友好包含一个数字,则会导致问题,例如然后“码头39”将成为“pier-39-342”,或者有没有办法捕获友好URL中的最后一个id(所以最后一个破折号后的id)并将其用作R:1的参数? / p>

我已经看过这个博客:http://weblogs.asp.net/owscott/archive/2010/04/20/url-parts-available-to-url-rewrite-rules.aspx这似乎涵盖了我的需求,但我不知道如何使用它。

1 个答案:

答案 0 :(得分:0)

这条规则似乎符合我的要求:

    <rule name="venue details">
      <match url="^([a-zA-Z0-9-]+)-([0-9-]+)$" />
      <action type="Rewrite" url="locationdetails.aspx?id={R:2}&amp;furl={R:1}" />
    </rule>