Asp.net 如何重定向URL以仅在aspx中更改主机部分?

Asp.net 如何重定向URL以仅在aspx中更改主机部分?,asp.net,redirect,url-rewriting,Asp.net,Redirect,Url Rewriting,我想重定向一个网站到另一个网站的方式,其他部分的URL保持不变。例如:重定向到 谢谢, Ali将第一个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, "xy

我想重定向一个网站到另一个网站的方式,其他部分的URL保持不变。例如:重定向到

谢谢,
Ali

将第一个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);

更好的办法是在可能的情况下更改DNS记录,以避免过度重定向

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

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

您可以这样转换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,并弹出一条信息性消息,说明域名已更改,他们应该开始使用新域名。

不要执行永久重定向,除非您真的真正想永久重定向。根据HTTP标准,永久移动301意味着这一点。符合现代标准的浏览器缓存301s。缓存后,原始URI将不再被命中。这意味着,如果你决定“撤销”你的301,那些已经被重定向的客户端将永远不会发现它。Firefox、Chrome等允许用户清除301缓存,但尤其是较新版本的IE,很难清除301重定向缓存。不要用301,除非你真的想永久使用。谢谢。这似乎奏效了,但不确定这其中有什么不好的一面。但目前它正在发挥作用。@araza85-如果你觉得答案有用,请将其标记为其他读者的答案。@NicholasCarey-是的,同意你在永久重定向上所说的。