使用ASP.NET MVC3,網站處於測試階段,客戶決定重命名其中一個控制器。處理重命名控制器的最佳方法
http://domain.com/foo[/*] -> http://domain.com/bar[/*]
什麼是最直接的方式來處理重定向,所以我不打破任何foo書籤?
使用ASP.NET MVC3,網站處於測試階段,客戶決定重命名其中一個控制器。處理重命名控制器的最佳方法
http://domain.com/foo[/*] -> http://domain.com/bar[/*]
什麼是最直接的方式來處理重定向,所以我不打破任何foo書籤?
保留舊的控制器,以便舊的URL仍然有效。
或者添加重寫規則。喜歡的東西:
domain.com/foo(/[_0-9a-z-]+)
到:
domain.com/bar{R:1}
在IIS URL重寫 http://technet.microsoft.com/en-us/library/ee215194(WS.10).aspx http://www.iis.net/download/URLRewrite
如果您正在使用MVC.NET你可能已經安裝了URL Rewrite。
如果你能想出如何在IIS中做到這一點,302重定向就可以了。這個截圖顯示它是not that arduous。或者,如果您使用的是Castle Windsor,則可能需要register an interceptor,它使用HttpResponse.Redirect()
另一種方法是在Global.asax.cs中爲舊控制器名稱註冊一個特定路由。
routes.MapRoute(
"RenamedController", // Route name
"[OldControllerName]/{action}/{id}", // URL with parameters
new { controller = "[NewControllerName]", action = "Index", id = "" } // Parameter defaults
);
在標準默認路由之前添加,並且您的新控制器應該同時響應新名稱和新名稱。
重寫規則在哪裏? – Thomas
看我的編輯。你通過IIS來完成。 – codenheim
和32bitkid提到的一樣,你可以用MVC.NET路由重寫。 – codenheim