Pergunta

Eu gostaria de adicionar uma barra para qualquer URL que correspondem uma rota válida, mas atualmente não terminam em uma barra, ou seja www.example.com/url

Depois de um url é correspondente a uma rota válida gostaria de redirecionamento 301 para o mesmo URL, mas adicionar a barra à direita ou seja www.example.com/url /

Eu passei algum tempo olhando para ele, mas eu não consigo descobrir isso.

Eu acredito rotas são combinados em caso PostResolveRequestCache, mas eu não sei como acessar os RouteData durante ou após esse evento para ver se uma rota válida foi correspondido. Se eu posso confirmar que uma rota válida foi combinado, então eu posso verificar a url para ter certeza que termina em uma barra.

Espero que isso é o suficiente claro, deixe-me saber se você precisar de mais informações.

Foi útil?

Solução

Eu suponho que você está tentando eliminar conteúdo duplicado para fins de SEO.

Scott Hanselman diz que você pode fazer isso com o módulo IIS7 Rewrite (você está correndo IIS7?) Seu posto no http://www.hanselman.com/blog/ASPNETMVCAndTheNewIIS7RewriteModule.aspx descreve o processo.

Outras dicas

Isso soa como um ajuste perfeito para filtro de ação:

public class EnforceTrailingSlashAttribute : ActionFilterAttribute
{
   public override void OnActionExecuting(ActionExecutingContext filterContext)
   {
      if (!filterContext.HttpContext.Request.Path.EndsWith("/"))
      {
         filterContext.Result = new RedirectResult(
            filterContext.HttpContext.Request.Path + "/");            
      }
   }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top