我想在任何匹配有效路线的网址上添加一个尾部斜杠,但目前不以斜线结尾,即www.example.com/url

在网址与有效路由匹配后,我想将301重定向到同一网址但添加尾部斜杠,即www.example.com/url /

我花了一些时间研究它,但我似乎无法弄明白。

我相信路由在PostResolveRequestCache事件中匹配,但我不知道如何在该事件期间或之后访问routedata以查看是否匹配了有效路由。如果我可以确认有效路由匹配,那么我可以检查网址以确保它以斜线结尾。

我希望这很清楚,如果您需要更多信息,请告诉我。

有帮助吗?

解决方案

我假设您正在尝试为SEO目的消除重复内容。

Scott Hanselman说你可以使用IIS7重写模块(你运行的是IIS7吗?)他的帖子在 http://www.hanselman.com/blog/ASPNETMVCAndTheNewIIS7RewriteModule.aspx 描述了该过程。

其他提示

这听起来非常适合动作过滤器:

public class EnforceTrailingSlashAttribute : ActionFilterAttribute
{
   public override void OnActionExecuting(ActionExecutingContext filterContext)
   {
      if (!filterContext.HttpContext.Request.Path.EndsWith("/"))
      {
         filterContext.Result = new RedirectResult(
            filterContext.HttpContext.Request.Path + "/");            
      }
   }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top