Rewrite-Engine

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Eine Rewrite-Engine (von englisch rewrite, „umschreiben“ und engine, „Maschine“) ermöglicht es, an einen Webserver gerichtete Anfragen intern umzuschreiben oder extern weiterzuleiten. Für den Apache-Webserver erledigt das Softwaremodul mod_rewrite diese Aufgabe. Andere Webserver wie etwa Microsoft IIS, Nginx, Lighttpd oder Hiawatha Webserver bieten ähnliche Funktionen.

Geschaffen wurde diese Funktionalität, um nach außen ein von internen Faktoren unabhängiges Adressierungsschema zur Verfügung stellen zu können, sodass beispielsweise selbst bei einer Änderung der Dateihierarchie die URLs weiterhin gültig bleiben. Man spricht in diesem Fall auch von Permanentlinks.

Die Rewrite-Engines erlauben, die Adressumleitung von zusätzlichen Bedingungen neben der angefragten URL abhängig zu machen, zum Beispiel von der referenzierenden URL, der User-Agent-Kennung oder der IP-Adresse des anfragenden Clients. Auf diese Weise können beispielsweise Domainweiterleitungen oder auch Cloaking realisiert werden.

Beispielanwendung[Bearbeiten]

Rewrite-Engines werden häufig genutzt, um Ressourcen mit dynamischen URLs unter Alternativadressen erreichbar zu machen.

Die Ressource mit der internen, technisch bedingten Adresse

/w/index.php?title=Beispiel

ist so beispielsweise auch unter folgender Adresse erreichbar

/wiki/Beispiel

Nach außen werden dann statt der dynamischen, parametrisierten Adressen scheinbar statische Adressen verwendet. Dies ist nützlich, da kurze, selbsterklärende Adressen meist als lesbarer, einfacher zu merken und ganz allgemein als vertrauenswürdiger eingestuft werden. Man spricht in diesem Fall auch von Clean URLs.

Eine mögliche Umsetzung des gezeigten Anwendungsfalls für das Apache-Modul mod_rewrite lautet im Serverkontext beispielsweise unter Nutzung eines regulären Ausdrucks:

RewriteEngine on
RewriteRule ^/wiki/(.*)$ /w/index.php?title=$1

Im Verzeichniskontext (per .htaccess-Datei) oder beim Einsatz der RewriteBase-Direktive kann die Syntax davon abweichen.

Weblinks[Bearbeiten]