【问题标题】:How to read rewritten url in asp.net 3.5如何在 asp.net 3.5 中读取重写的 url
【发布时间】:2011-11-23 03:15:26
【问题描述】:

如何读取重写后的 url。如果我在重写的 url 中不使用 .aspx,那么“Request.RawUrl”就不起作用。它正在返回原始 URL。

如果您对此有任何解决方案,请提出建议。我正在使用 Ionics Isapi 重写过滤器 (IIRF)。

例如,如果我有重写:

http://<mywebsite>/users.aspx?id=12&name=amitava

http://<mywebsite>/profile/12/amitava

现在在同一页面中,在某些时候,我想获取这个重写的 url,以便在登录链接中指向返回 url。现在登录链接应该是:

http://<mywebsite>/login.aspx?ReturnUrl=/profile/12/amitava

http://<mywebsite>/login.aspx?ReturnUrl=http://<mywebsite>/profile/12/amitava

实现这一目标的正确方法是什么?谢谢。

【问题讨论】:

    标签: asp.net url-rewriting iirf


    【解决方案1】:

    对于 IIRF,这称为 unmangling,可以通过使用修饰符 U 来实现。

    来自IIRF manual

    U = 在服务器中存储原始 url 变量 HTTP_X_REWRITE_URL

    只需将修饰符U 添加到您希望保留其原始网址的RewriteRule。例如:

    RewriteRule ^yourexpression$ yourrewrittenurl [I,U,L] 
    

    然后,在您页面的代码中,您可以像这样访问原始网址:

    Request.ServerVariables("HTTP_X_REWRITE_URL")
    

    另见我的answer here

    【讨论】:

      【解决方案2】:

      您是否在使用 IIS 重写模块? 如果你是,那么HttpContext.Current.Request.RawUrl 应该给你重写的 URL,HttpContext.Current.Request.Url.OriginalString 应该给你非重写的 URL。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-08
      • 2012-02-08
      • 1970-01-01
      • 2012-12-02
      • 2014-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多