我想在任何匹配有效路线的网址上添加一个尾部斜杠,但目前不以斜线结尾,即www.example.com/url
在网址与有效路由匹配后,我想将301重定向到同一网址但添加尾部斜杠,即www.example.com/url /
我花了一些时间研究它,但我似乎无法弄明白。
我相信路由在PostResolveRequestCache事件中匹配,但我不知道如何在该事件期间或之后访问routedata以查看是否匹配了有效路由。如果我可以确认有效路由匹配,那么我可以检查网址以确保它以斜线结尾。
我希望这很清楚,如果您需要更多信息,请告诉我。
答案 0 :(得分:0)
我假设您正在尝试为SEO目的消除重复内容。
Scott Hanselman说你可以使用IIS7 Rewrite模块执行此操作(你运行IIS7吗?)他在http://www.hanselman.com/blog/ASPNETMVCAndTheNewIIS7RewriteModule.aspx的帖子描述了这个过程。
答案 1 :(得分:-1)
这听起来非常适合动作过滤器:
public class EnforceTrailingSlashAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!filterContext.HttpContext.Request.Path.EndsWith("/"))
{
filterContext.Result = new RedirectResult(
filterContext.HttpContext.Request.Path + "/");
}
}
}