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(), Add
IISUrlRewrite() und Add
ApacheModRewrite().