2011-10-26 80 views
0

我想,以確定最佳的方式來重定向一組文件,我從一箇舊網站(ColdFusion的)對我的新網站(新位置有asp.net mvc 3)。最好的辦法IIS 7.5

我想重定向這些網頁有301種狀態,讓引擎知道,這是一個永久性的變化。

目前我在web.config中的自定義錯誤部分設置爲任何404重定向到主頁,這對於所有的舊鏈接不再在服務的偉大工程,但它發送一個302種狀態,其我不想要它將所有重定向發送到家裏,因此不會給我從舊鏈接中獲得的搜索引擎優化。

我想過只需在IIS中將.cfm作爲模塊映射添加到我的.net Isapi中,然後通過添加標題將所有頁面創建爲cfm,然後意識到這將是很多工作。

是否有另一個「更容易」的解決方案來實現這一目標?

回答

2

是,的HttpHandler。在你的web.congig中,你註冊它來處理所有的* .cfm URL(http://msdn.microsoft.com/en-us/library/46c5ddfy%28v=vs.71%29.aspx),實現將只是你的301重定向。最多10行代碼。

 
using System.Web; 
public class CfmHandler : IHttpHandler { 
    public void ProcessRequest(HttpContext context) { 
     // redirect here, you have HttpContext ready  
    } 
    public bool IsReusable { 
     // To enable pooling, return true here. 
     // This keeps the handler in memory. 
     get { return true; } 
    } 
} 

更多在:http://msdn.microsoft.com/en-us/library/5c67a8bd%28v=vs.71%29.aspx

+0

感謝您的答覆。對於這個newb後續問題感到抱歉,但是這段代碼到底在哪裏呢?編輯:另外,我怎麼能告訴它哪些文件重定向在哪裏?我認爲這需要在我的路線中以某種方式處理? –

+0

它是獨立的類,放在適合你的地方 - 在你的「helpers」文件夾的「基礎結構」中......以及映射 - 請參閱我發佈的關於處理程序註冊的鏈接。 IIS會爲特定的URL模式選擇這個處理程序,並且MVC甚至不會啓動該請求(MVC也只是一個註冊的處理程序btw,你可以在一個應用程序中使用多個處理程序用於不同的目的) – rouen

+0

讓它工作!許多! –