使用ASP.NET MVC3,网站处于测试阶段,客户决定重命名其中一个控制器。
http://domain.com/foo[/*] -> http://domain.com/bar[/*]
处理重定向的最简单方法是什么,所以我不打破任何foo书签?
答案 0 :(得分:2)
保留旧控制器,以便旧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。
答案 1 :(得分:2)
另一个选择是在Global.asax.cs中为旧控制器名称注册一个特定路由。
routes.MapRoute(
"RenamedController", // Route name
"[OldControllerName]/{action}/{id}", // URL with parameters
new { controller = "[NewControllerName]", action = "Index", id = "" } // Parameter defaults
);
在标准默认路由之前添加它,并且新控制器应响应旧名称和新名称。
答案 2 :(得分:0)
302重定向没问题,如果你能弄清楚如何在IIS中做到这一点。此屏幕截图显示它是not that arduous。或者,如果你正在使用Castle Windsor,你可能希望register an interceptor使用HttpResponse.Redirect()