protected override Task OnRouteMatched(RouteContext context) { //TODO: Need to handle when a slug matches more than one route. if (_websiteDataService.TryToGetPageNodeFromSlug(context.RouteData.Values[FriendlyUrlRouteDataValueKey], out Node pageNode)) { var outgoingPath = pageNode.Path; var incomingPath = context.HttpContext.Request.Path; if (incomingPath.Equals(outgoingPath)) { context.RouteData.DataTokens[PageNodeRouteDataValueKey] = pageNode; context.RouteData.Values[ControllerRouteDataValueKey] = pageNode.Type; } else { context.RouteData.Values[ControllerRouteDataValueKey] = "Redirect"; context.RouteData.Values[RedirectPathRouteDataValueKey] = outgoingPath; } } else { context.RouteData.Values[ControllerRouteDataValueKey] = "NotFound"; } context.RouteData.Values[ControllerActionRouteDataValueKey] = "Index"; return(base.OnRouteMatched(context)); }