【问题标题】:UrlRewriter.net exclusive regex rulesUrlRewriter.net 独家正则表达式规则
【发布时间】:2011-04-12 21:19:22
【问题描述】:

我正在尝试将一些使用UrlRewriter.net 的重写规则添加到我的 ASP.NET Web 应用程序中。问题是我是 Regex 新手,provided examples 非常初级。

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

即,如果我添加此规则:

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

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

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

我想要的是:

  • www.ex.com/test重写为www.ex.com/test.aspx,并且
  • www.ex.com/test?page=dummy重写为www.ex.com/test.aspx?page=dummy.aspx

非常感谢!

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

【问题讨论】:

    标签: c# .net regex url-rewriting urlrewriter.net


    【解决方案1】:

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

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

    这样你匹配所有直到问号 - 一个或多个不是问号的字符。

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

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

    【讨论】:

    • 这解决了我的问题,但我还必须在 Global.Application_EndRequest 处理程序中进行一些重写,因为登录控制会在后台看到重写的 url,所以链接通常在 webform POST 期间搞砸了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多