URLRewriter.net正则表达式用于查询字符串

时间:2009-09-25 21:53:32

标签: asp.net regex url-rewriting

我有这个网址:

  

http://www.site.com/products-book_1.aspx?promo=free

以下是我在web.config中提供的UrlRewriter规则:

<rewrite url="~/products-(.+)_(\d+).aspx" to="~/product.aspx?pid=$2" />

我可以在此表达式中添加什么来检索促销价值?最终结果是http://www.site.com/products.aspx?pid=1&promo=free

或者我需要以不同的方式思考这个问题。我看到的每个例子都只是在扩展之前使用表达式,而不是之后。有时需要附加的查询字符串呢?

1 个答案:

答案 0 :(得分:1)

<rewrite url="~/products-(.+)_(\d+).aspx?promo=(.*)" to="~/product.aspx?pid=$2&promo=$3" />

实际上这不是一个好的正则表达式,除非你的网址包含GET参数'promo'而没有其他。

修改

这可能稍微好一些:只包含促销参数(如果存在),否则促销会留空。

<rewrite url="~/products-(?:.+?)_(\d+).aspx(?:\?promo=(.*))*" to="~/product.aspx?pid=$1&promo=$2" />