【问题标题】:How can I redirect a URL to change the host part only in aspx?如何重定向 URL 以仅在 aspx 中更改主机部分?
【发布时间】:2013-09-23 21:04:18
【问题描述】:

我想以 URL 的其他部分保持不变的方式将一个站点重定向到另一个站点。例如:http://abc.com/test1/doc1.aspx 重定向到http://xyz.com/test1/doc1.aspx

谢谢, 阿里

【问题讨论】:

    标签: asp.net redirect url-rewriting


    【解决方案1】:

    最好的办法是尽可能更改 DNS 记录以避免过度重定向。

    如果您真的想重定向所有内容,只需将其添加到根文件夹中的 web.config

    <configuration>
        <system.webServer>
             <httpRedirect enabled="true" destination="http://xyz.com" httpResponseStatus="Permanent" />
        </system.webServer>
    </configuration>
    

    【讨论】:

    • 不要做永久重定向,除非你真的,真正的意思是永久的。根据 HTTP 标准,301 Moved Permanently 就是这个意思。符合现代标准的浏览器缓存 301。一旦缓存,原始 URI 将不再被命中。这意味着如果您决定“撤消”您的 301,已经被重定向的客户将永远发现它。 Firefox、Chrome 等允许用户清除 301 缓存,但尤其是较新版本的 IE,很难清除 301 重定向缓存。不要使用 301,除非你真的希望它是永久性的。
    • 谢谢。这似乎奏效了,不确定这会有什么不好的一面。但现在它正在完成这项工作。
    • @araza85 - 如果您觉得答案有用,请将其标记为其他读者的答案。
    • @NicholasCarey - 是的,同意你所说的永久重定向。
    【解决方案2】:

    将第一个 url 中的主机替换为预期的新主机,如下所示

    string currentUrl = "http://abc.com/test1/doc1.aspx";
    Uri uri = new Uri(currentUrl);
    
    //Result: "http://xyz.com/test1/doc1.aspx"
    string newUrl = currentUrl.Replace(uri.Host, "xyz.com");
    Response.Redirect(newUrl);
    

    【讨论】:

      【解决方案3】:

      您可以像这样转换 URI:

      private RedirectToNewHost( Uri uri , string newHost )
      {
        UriBuilder builder = new UriBuilder( uri ) ;
        builder.Host = newHost ;
        Response.Redirect(builder.Uri.AbsoluteUri);
      }
      
      private RedirectToNewHost( string uri , string newHost )
      {
        UriBuilder builder = new UriBuilder( uri ) ;
        builder.Host = newHost ;
        Response.Redirect( builder.Uri.AbsoluteUri );
      }
      

      但正如@Dragan_Radivojevic 指出的那样,修改 DNS 以使旧域名成为新域的别名是一个干净的解决方案。然后,如果您要更改域名,请让 Web 服务器查看入站 URI 并弹出一条信息性消息,说明域名已更改,他们应该开始使用新域名。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-08
        • 2017-04-05
        • 1970-01-01
        • 2020-09-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多