2012-09-25 84 views
2

我升級老asp.net web表單的網站。我想使網址看起來更好,所以我使用路由系統,如下所示:Url轉發無效路由?

void RegisterRoutes(RouteCollection routes) 
{ 
    routes.MapPageRoute("account settings", 
     "settings/account/", 
     "~/accountsettings.aspx"); 
} 

這工作正常。像mydomain.com/settings/account/的網址看起來好多了。但是,頁面仍然可以利用其物理位置,mydomain.com/accountsettings.aspx訪問。我想將這些舊錶單網址的請求轉發到我的新網址。

這樣做的最好方法是什麼?有沒有一個簡單的方法可以使用,如RegisterRoutes

+0

我不知道是否有一個具體的方法,但在'每一頁上Page_Init',您可以用'Response.RedirectToRoute()'重定向到正確的途徑,如果該URL包括一個aspx擴展。 –

回答

2

我相信你需要讓路由引擎知道用無視物理文件的路徑IgnoreRoute:

routes.IgnoreRoute("accountsettings.aspx"); 

請仔細檢查IgnoreRoute語法,因爲我不記得,如果你將需要包含相對路徑或僅包含文件名。

一旦你的工作,你可以捕獲404,它會產生,可能在Global.asax中全局錯誤處理程序,並重定向如果是這樣的請求的路徑。這篇博客文章舉例說明了如何在全局錯誤處理程序中捕獲404:http://www.andornot.com/blog/post/Handling-404-errors-with-ASPNET.aspx

如果這是一個公共站點,並且您關心搜索引擎優化,那麼您可能還想考慮指定它是使用http的永久重定向狀態碼301.這將告訴谷歌和其他搜索引擎,舊的頁面現在在新的位置存在,你就不會從該頁失去了價值。

希望有幫助!

+0

這種方法聽起來不錯。我不太確定在一個地方忽略路線,然後在其他地方處理404s。我會看看我是否可以制定出一種方法來一次性完成這些工作。 – Oliver