【问题标题】:implementing rewrite for http://site/NICK => http://site/profile.aspx?nick=NICK为 http://site/NICK => http://site/profile.aspx?nick=NICK 实现重写
【发布时间】:2009-07-30 01:10:34
【问题描述】:

嘿伙计们,就像标题所说的那样,我怎样才能尽可能简单地完成这种重写?是与 httphandlers 还是 asp.net 路由?我使用的是 asp.net 3.5 版本。

问题是我希望忽略任何其他请求,例如对 .aspx 文件、图像、文件夹等的请求:

我希望处理这些:

site.com/john => site.com/profile.aspx?nick=john

site.com/mark => site.com/profile.aspx?nick=mark

site.com/fred => /site.com/profile.aspx?nick=fred

我不想处理这些:

site.com/page.aspx

site.com/images/logo.jpg

感谢您的建议 :)

【问题讨论】:

    标签: asp.net vb.net url-rewriting httphandler


    【解决方案1】:

    Scott Guthrie 对此有一个great post。如果您正在运行 IIS7,使用URL Rewrite module 非常简单。

    【讨论】:

    • 罗伯特,我正在使用 IIS7,但我对这种重写非常陌生,而且这个项目非常紧迫。您能否给我一些指导,我如何使用您提到的模块完成我的任务?我真的很感激:)
    【解决方案2】:

    这个

    Request.Url.ToString()
    

    获取网址(如果我找到的页面是正确的,我不经常使用 asp.net)

    你可以在这个 URL 上使用一些正则表达式,也许是某种......

    site\.com/([\w])+$
    

    不知道如何用.net读取正则表达式的捕获部分,必须有一个合适的对象。

    然后向用户发送重定向,您应该能够使用适当的 Redirect-HTTP-Header 来执行此操作。如果我是对的,那么 Response-Object 中有一个类似命名的集合。

    请注意,此实现不允许重写

    site.com/john/some_other_param
    

    如果您对如何详细实施有疑问,我会尝试进一步研究

    问候

    【讨论】:

      【解决方案3】:

      我过去曾使用 UrlRewriter.net 来执行此操作。它真的很好用。您可以将其配置为仅在没有映射到 url 的现有文件(即真实的 aspx 页面或图像文件)时应用重写规则

      http://www.urlrewriting.net

      当然,如果您使用的是 IIS7,则内置路由可以执行此操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-25
        • 1970-01-01
        • 2012-02-05
        • 1970-01-01
        • 2011-12-19
        相关资源
        最近更新 更多