2010-08-05 58 views
0

我需要将所有请求从一个域移到另一个域。我想要更改部分网址,例如subdomain.olddomain/url - > subdomain.newdomain/url。如何在asp.net中编写重定向应用程序?

我相信这是一块蛋糕和写Application_Begin要求为:

void Application_BeginRequest(object sender, EventArgs e) 
    { 
     string url = Request.Url.ToString().ToLower(); 
     string from = ConfigurationSettings.AppSettings["from"]; 
     if (url.IndexOf(from) >= 0) 
     { 
      url = url.Replace(from, ConfigurationSettings.AppSettings["to"]); 
      Response.Redirect(url); 
     } 
     else 
     { 
      if (url.IndexOf("error.aspx") < 0) 
      { 
       Response.Redirect("Error.aspx?url=" + Server.UrlEncode(url)); 
      } 
     } 
    } 

到目前为止,我忘了,这只是的BeginRequest启动时的文件实际存在。

任何想法,我怎么能在asp.net中做这样的重定向,而无需创建数百个旧页面?

回答

0

我会推荐使用像ISAPIRewrite [http://www.isapirewrite.com/]这样的工具来管理这个用于IIS 6的工具,或者为IIS7内置的URL重写。

没有理由重新发明轮子...

+0

好的,但你从哪里改写?这听起来像你将不得不将所有未命中映射到单个重定向页面。如果是这样,我不确定这是该工具的理想用法。 – 2010-08-05 21:12:46

+0

“IIS URL重写2.0使Web管理员能够创建强大的规则” - 这是一个伟大的工具,但它花了很长时间才找到合适的设置 – st78 2010-08-05 21:38:31

1

不是100%确定,但我认为如果您在IIS中取消选中Check that file exists选项,它应该可以工作。你如何做到这一点取决于IIS版本。

+0

这似乎是我的方式。在ASP.NET开发服务器上,一切正常。 – st78 2010-08-05 20:52:18

+0

问题是,在IIS中检查描述在http://forums.iis.net/t/1114839.aspx是未选中:) 因此,本地它在BeginRequest开始,在生活 - 与错误。 – st78 2010-08-05 21:08:06

0

我相信你可以指定一个ASPX在404错误上运行。该页面可以执行重定向。

0

我会建议在DNS级别上执行此操作。我会重定向一个永久的301重定向,以确保您的搜索引擎排名不受影响。

+0

我不知道我明白。 301重定向是HTTP。 DNS可能意味着为指向新服务器的前一个主机名创建别名。 – 2010-08-05 20:41:35

相关问题