301 Redirect après la mise en correspondance d'une route mais avant l'exécution du contrôleur

StackOverflow https://stackoverflow.com/questions/1203218

Question

J'aimerais ajouter une barre oblique à la fin de toute URL qui correspond à un itinéraire valide, mais ne se termine pas actuellement par une barre oblique, c'est-à-dire www.example.com/url

.

Une fois qu'une URL est associée à un itinéraire valide, je voudrais rediriger vers la même URL, mais ajouter la barre oblique finale, à savoir www.example.com/url /

.

J'ai passé un peu de temps à examiner cela, mais je n'arrive pas à comprendre.

Je pense que les itinéraires sont appariés dans l'événement PostResolveRequestCache, mais je ne sais pas comment accéder aux routedata pendant ou après cet événement pour voir si un itinéraire valide a été apparié. Si je peux confirmer qu'un itinéraire valide a été mis en correspondance, je peux vérifier l'URL pour m'assurer qu'elle se termine par une barre oblique.

J'espère que c'est assez clair, dites-moi si vous avez besoin de plus d'informations.

Était-ce utile?

La solution

Je suppose que vous essayez d'éliminer le contenu en double à des fins de référencement.

Scott Hanselman dit que vous pouvez faire cela avec le module IIS7 Rewrite (exécutez-vous IIS7?) Son message sur http://www.hanselman.com/blog/ASPNETMVCAndTheNewIIS7RewriteModule.aspx décrit le processus.

Autres conseils

Cela ressemble parfaitement à un filtre d’action:

public class EnforceTrailingSlashAttribute : ActionFilterAttribute
{
   public override void OnActionExecuting(ActionExecutingContext filterContext)
   {
      if (!filterContext.HttpContext.Request.Path.EndsWith("/"))
      {
         filterContext.Result = new RedirectResult(
            filterContext.HttpContext.Request.Path + "/");            
      }
   }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top