我最初在RouteConfig中有这个maproute
routes.MapRoute(
name: "thread",
url: "{Areamix}/{urltitle}/{id}/thread",
defaults: new {controller = "thread", action = "view"
});
带那个的路线太长了所以我把它缩短到
routes.MapRoute(
name: "thread",
url: "{urltitle}/{Areamix}-{id}",
defaults: new
{
controller = "thread",
action = "view"
});
你已经知道旧的网页现在返回404错误,因为路由URL已经改变,我怎么能得到旧的索引页面重定向或永久重定向到新的MapRoute ?它们都有共同的特性,如{id},如有任何建议,将非常感谢。
保留旧的MapRoute原样,但将其映射到新的控制器(动作现在是Redirect
而不是view
:
routes.MapRoute(
name: "thread",
url: "{Areamix}/{urltitle}/{id}/thread",
defaults: new {controller = "thread", action = "Redirect" // Action is now Redirect (instead of view)
});
然后,在控制器中创建一个新的Action:
public ActionResult Redirect()
{
// Now rebuild your url in new format:
var link = RouteData.Values["urltitle"] + RouteData.Values["Areamix"] + "-" + RouteData.Values["id"];
return RedirectPermanent(link);
}
现在所有匹配旧maproute的请求都转到Redirect Action,然后被格式化为新的maproute格式。
我没有测试过,但是应该是这样的