2010-08-05 54 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

相關問題