Mod rewrite: Unterschied zwischen den Versionen
(→Definition) |
(→Beispiel) |
||
Zeile 23: | Zeile 23: | ||
Für das Apache Modul mod_rewrite gibt es zahlreiche Einsatzszenarien. Viele Ausdrücke werden daher für Standardfälle veröffentlicht und können von jedem Administrator eingesetzt werden. Ein Beispiel für eine Rewriterule ist: | Für das Apache Modul mod_rewrite gibt es zahlreiche Einsatzszenarien. Viele Ausdrücke werden daher für Standardfälle veröffentlicht und können von jedem Administrator eingesetzt werden. Ein Beispiel für eine Rewriterule ist: | ||
− | < | + | <pre>RewriteEngine on RewriteRule (.*)\.html$ /cgi-bin/script.pl?var=$1</pre> |
Die Semantik der Regel basiert auf Regular Expressions. Die Regeln können somit als eine Art "Suchen und Ersetzen" aufgefasst werden. Das bedeutet, eine eingehende Zeichenkette wird überprüft und umgeschrieben. | Die Semantik der Regel basiert auf Regular Expressions. Die Regeln können somit als eine Art "Suchen und Ersetzen" aufgefasst werden. Das bedeutet, eine eingehende Zeichenkette wird überprüft und umgeschrieben. |
Version vom 29. Oktober 2018, 11:26 Uhr
Inhaltsverzeichnis
Definition
Der Begriff "mod_rewrite" bezeichnet ein Modul für den Apache Webserver, welches in zahlreichen Implementationen im Einsatz ist und die Weiterleitung bestimmter Aufrufe an den dedizierten Inhalt steuert. Grundsätzlich wird das Modul dafür verwendet, einen eingehenden Aufruf auf einen Pfad im Dateisystem des Webservers zu transformieren. Somit ist es möglich, eine URL “umzuschreiben”. Dafür wird eine sogenannte "rewriterule", also eine Regel, festgelegt, die diese Weiterleitung repräsentiert und mithilfe von Regular Expressions realisiert wird.
Die Macht der flexiblen URL
Administratoren und Architekten von komplexen Websystemen arbeiten oftmals mit dem Modul "mod_rewrite", denn es ermöglicht auf der Ebene des Webservers eine zuverlässige und stabile Steuerung von Anfragen. Vor allem für die heute übliche Trennung zwischen einem Webserver und der Applikationsschicht ist diese Vorgehensweise von immenser Bedeutung. Die verwendete URL und deren Zielpunkt sind durch diese Trennung von einer eingesetzten Anwendung oder einer kompletten Infrastruktur absolut unabhängig. Diese Unabhängigkeit wird immer wichtiger, da damit die Austauschbarkeit durch Weiterentwicklung und Strategieänderungen gewährleistet ist.
Die Rewriteengine
Hinter der Umsetzung des Rewrite Moduls steht eine komplexe Rewriteengine. Das bedeutet, eine eigens dafür zur Verfügung stehende Software nimmt die Regeln, die auf Textbasis in der .htaccess Datei eines Webservers definiert sind, entgegen und interpretiert sie derart, dass der Webserver in der Lage ist, die Rewrite Regeln umzusetzen. Die Rewriteengine kann eine Reihe von Bedingungen zu jeder Regel auswerten. Dabei wird stets die gesamte URL berücksichtigt, die auch URI genannt wird (Unified Resource Identifier).
Für das Konfigurieren von Rewriterules stehen im Webserver verschiedene Konfigurationsdateien wie die httpd.conf zur Verfügung. In den meisten Fällen werden aber im Sinne der Standardisierung die Rewriterules in der .htaccess Datei des Webservers vereinbart.
Direktiven
Die Funktionsweise des Rewrite Moduls wird über sogenannte Direktiven gesteuert. Diese Angaben bilden Bereiche innerhalb der Webserver-Konfiguration, die Funktionen einleiten und so eine übersichtliche und voneinander abgegrenzte Konfiguration zum Beispiel für verschiedene URLs oder verschiedene Pfade möglich macht. Grundlage für die Darstellung der einzelnen Direktiven bildet die XML-Semantik. Besonders bekannt und häufig eingesetzt ist die Rewrite Base Directive. Sie gibt an, welcher relative Pfad durch eine Rewriterule ersetzt werden soll.
Darüber hinaus gibt es weitere Direktiven, zum Beispiel um Bedingungen abzubilden. Auf diese Weise lassen sich komplexe Regeln für einen Webauftritt vereinbaren. Wichtig ist dabei, dass stets nachvollziehbar ist, welche Regeln vereinbart wurden, um sich widersprechende oder nicht erfüllbare Regeln zu vermeiden.
Beispiel
Für das Apache Modul mod_rewrite gibt es zahlreiche Einsatzszenarien. Viele Ausdrücke werden daher für Standardfälle veröffentlicht und können von jedem Administrator eingesetzt werden. Ein Beispiel für eine Rewriterule ist:
RewriteEngine on RewriteRule (.*)\.html$ /cgi-bin/script.pl?var=$1
Die Semantik der Regel basiert auf Regular Expressions. Die Regeln können somit als eine Art "Suchen und Ersetzen" aufgefasst werden. Das bedeutet, eine eingehende Zeichenkette wird überprüft und umgeschrieben.
Im obigen Beispiel werden alle Zugriffe auf die HTML-Datei im Basisverzeichnis des Apache Webservers gefunden. Alle anderen Eingänge werden nicht durch diese Rewriterule bearbeitet.
Alle Eingänge, die dieser Bedingung genügen, werden auf ein Script weitergeleitet. Dabei spielt es keine Rolle, mit welcher URL oder URI der Aufruf geschehen ist. Das Script wird dabei derart aufgerufen, dass der Name des ursprünglich aufgerufenen Pfades mit übergeben wird.
An diesem Beispiel ist zu erkennen, dass das Rewrite Modul durchaus dafür geeignet ist, komplexe Anwendungsfälle auf einem Webserver und darüber hinaus zu steuern.
Bedeutung für die Suchmaschinenoptimierung
Für die Suchmaschinenoptimierung hat die Rewriteengine eine große Bedeutung, denn die Routinen einer Suchmaschine sind darauf ausgelegt, gut strukturierte und menschenlesbare URL Bäume zu finden.
Viele Webanwendungen generieren jedoch dynamische URLs, die für den Menschen nicht logisch erfassbar sind und auch nichts über den inhaltlichen Aufbau eines Internetauftritts aussagen.
Mithilfe des Apache Moduls mod_rewrite lässt sich dieses Problem jedoch beheben, indem komplexe dynamische URLs in “sprechende” URLs umgeschrieben werden. Dadurch wird sowohl für User als auch für Suchmaschinen die Ordnerstruktur einer Website leichter nachvollziehbar. Infolgedessen kann der User bereits in den SERPs anhand der URL eines Suchergebnisses beurteilen, was er auf der Seite vorfinden wird und ob diese relevant für ihn ist.