0

我正在尝试将一些使用UrlRewriter.net的重写规则添加到我的 ASP.NET Web 应用程序中。问题是我是一个正则表达式新手,并且提供的示例非常基本。

我的问题是:如何区分包含 GET 查询参数的 url?

即,如果我添加此规则:

<rewrite url="~/([.+])" to="~/$1.aspx" />

它将重写www.example.com/productswww.example.com/products.aspx,但它也将重写www.example.com/products?id=1www.example.com/products?id=1.aspx

问题实际上只在使用登录控件时发生,因为它创建了一个类似于 的 url www.example.com/login?returnUrl=/members,我不知道如何重写它。

我想要的是:

  • 重写www.ex.com/testwww.ex.com/test.aspx, 和
  • 重写www.ex.com/test?page=dummywww.ex.com/test.aspx?page=dummy.aspx

非常感谢!

[编辑]顺便说一句,我还没有想出如何为 UrlRewriter 打开控制台调试。我已将“注册记录器”部分添加到配置文件中,但 VS 输出窗口什么也没显示。那也会很有帮助。

4

1 回答 1

0

使用以下正则表达式进行匹配:

“~/([^\?]+)(.*)?”

这样,您可以匹配所有内容,直到出现问号 - 一个或多个不是问号的字符。

然后 $1 保存路径部分,$2 保存“?”中的所有内容。直到 URL 结束。

请注意第二个分组括号后的问号 - 这意味着您不需要该部分,因此www.ex.com/test也可以使用。

于 2011-04-12T13:19:22.750 回答