URL Rewriting

Eintrag zuletzt aktualisiert am: 24.11.2016

Die Abbildung einer angefragten URL auf eine andere (interne) URL innerhalb des Webservers nennt man URL-Rewriting oder URL-Remapping. Dabei entsteht ein Alias für eine URL. Es gibt mehrere Gründe dafür, eine URL auf eine andere URL abzubilden:
  • Für ausgewählte lange URLs sollen kurze URLs definiert werden, die man leichter auch durch direkte Adresseingabe anwählen kann.
  • Eine URL hat sich geändert. Man möchte aber, dass (für eine Übergangszeit) die alten URLs noch zum Ziel führen.
  • Parametrisierte Webseiten sollen eine Fassade aus »echten« URLs erhalten, damit die Seiten in Suchmaschinen besser aufgenommen werden.
  • Eine URL enthält Zusatzinformationen (z.B. Authentifizierung), die die korrekte Auflösung der URL auf dem Webserver verhindern würden.

Die Unterstützung für URL Rewriting in Form des "ASP.NET Routing" hat Microsoft in ASP.NET 3.5 SP 1 und ASP.NET MVC 1.0 eingeführt. Zuvor konnte man dies aber über die global.asax-Datei (Ereignis Application_BeginRequest()) schon selbst implementieren.

Anwendungsfall 1: Session-Management ohne Cookies

Die URL
http://www.domain.tld/12345/seite.aspx
wird intern abgebildet auf
http://www.domain.tld/seite.aspx
für den Benutzer mit der Session-ID 12345

Anwendungsfall 2: Seiten-Fassaden

Mehrere URLs werden auf eine abgebildet, um Einzelseiten vorzutäuschen, wo in Wirklichkeit eine zentrale, parametrisierte Seite implementiert ist.

Beispiel:

http://www.domain.tld/produkte/seife.aspx
und
http://www.domain.tld/produkte/gartenzwerg.aspx

werden abgebildet auf
http://www.domain.tld/produkte/katalog.aspx?p=seife
bzw.
Http://www.domain.tld/produkte/katalog.aspx?p=gartenzwerg

URL-Rewriting in ASP.NET Core (ab Version 1.1)

Für das URL Rewriting – wahlweise mit serverseitigem Umlenken oder clientseitigen Redirect - gibt es die neue Komponente Microsoft.AspNetCore.Rewrite mit Klasse RewriteOptions mit den Methoden AddRedirect(), AddRewrite(), AddRedirectToHttps(), AddRedirectToHttpsPermanent(), AddIISUrlRewrite() und AddApacheModRewrite().