如何配置asp.net mvc路由以永久重定向301
hocalhost / Products.aspx和hocalhost / Search.aspx
到
hocalhost / Products和hocalhost / Search
即。从路径中删除 .aspx 扩展程序?
答案 0 :(得分:2)
这些方面的东西应该可以解决问题。映射以下路线:
routes.MapRoute("Redirect route", "{file}.aspx",
new { controller = "home", action = "redirect" });
在控制器中定义Redirect
操作:
public ActionResult Redirect()
{
// use Request.RawUrl, for instance to parse out what was invoked
// this regex will extract anything between a "/" and a ".aspx"
var regex = new Regex(@"(?<=/).+(?=\.aspx)", RegexOptions.Compiled);
var action = regex.Match(Request.RawUrl);
return RedirectToActionPermanent(action.Value);
}
您可以将两个aspx
页面重定向到同一个重定向路由,并通过解析HttpContext.Request.RawUrl
来检测实际调用了哪个文件(尽管可能有更好的方法)。
<强>更新强>
确实有一种更简单的方法,正如@alex本人所发现的那样。要在原始请求中获取文件,只需执行以下操作:
string file = RouteData.Values["file"].ToString();