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

时间:2013-09-23 21:04:19

标签: asp.net redirect url-rewriting

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

谢谢, 阿里

3 个答案:

答案 0 :(得分:0)

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

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);

答案 1 :(得分:0)

更好的想法是尽可能更改DNS记录,以避免过多的重定向。

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

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

答案 2 :(得分:0)

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