2 Stimmen

301 Umleitung, nachdem eine Route übereinstimmt, aber vor der Controller-Ausführung

Ich möchte einem Treffer eine abschließende Schrägstrich zu den URLs hinzufügen, die einer gültigen Route entsprechen, aber derzeit nicht mit einem Schrägstrich enden, d.h. www.example.com/url

Nachdem eine URL mit einer gültigen Route übereinstimmt, möchte ich eine 301-Weiterleitung zur selben URL durchführen, aber mit einem abschließenden Schrägstrich, d.h. www.example.com/url/

Ich habe einige Zeit damit verbracht, mich damit zu beschäftigen, aber ich scheine es nicht herauszufinden.

Ich glaube, dass Routen im PostResolveRequestCache-Ereignis übereinstimmen, aber ich weiß nicht, wie ich auf die Routendaten während oder nach diesem Ereignis zugreifen kann, um festzustellen, ob eine gültige Route übereinstimmte. Wenn ich bestätigen kann, dass eine gültige Route übereinstimmte, kann ich die URL überprüfen, um sicherzustellen, dass sie mit einem Schrägstrich endet.

Ich hoffe, das ist klar genug, lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

0voto

Robert Harvey Punkte 173098

Ich nehme an, Sie versuchen, doppelten Inhalt aus SEO-Gründen zu eliminieren.

Scott Hanselman sagt, dass Sie dies mit dem IIS7 Rewrite-Modul tun können (verwenden Sie IIS7?). Sein Beitrag unter http://www.hanselman.com/blog/ASPNETMVCAndTheNewIIS7RewriteModule.aspx beschreibt den Prozess.

-1voto

Pavel Chuchuva Punkte 21957

Dies klingt nach einem perfekten Einsatz für einen Aktionsfilter:

public class EnforceTrailingSlashAttribute : ActionFilterAttribute
{
   public override void OnActionExecuting(ActionExecutingContext filterContext)
   {
      if (!filterContext.HttpContext.Request.Path.EndsWith("/"))
      {
         filterContext.Result = new RedirectResult(
            filterContext.HttpContext.Request.Path + "/");            
      }
   }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X