Rewrite Engine richtig einsetzen
Folgender Artikel wurde von Herrn
Nils Langner
in der Kategorie "OnPage Optimierung"
bereitgestellt.
Diese Anleitung soll Sie in die Lage versetzen die URLs Ihrer Webseite suchmaschinenfreundlich zu gestallten. Dabei wird die übliche Vorgehensweise der Verwendung der Rewrite Engine des Apache Servers beschrieben. |
Regeln anwenden
Gehen wir nur genauer auf die einzelnen Zeilen Code ein: RewriteEngine On Hiermit sagen Sie dem Apache Webserver, dass wir das Modul verwenden wollen. Sie schalten es sozusagen ein. #Regeln Zeilen, bei denen ein # vorausgeht haben nur die Funktion eines Kommentars. Sie werden vom Server nicht beachtet, Sie sollten sie aber trotzdem verwenden um nach einiger Zeit noch zu wissen, was sie dort eigentlich gemacht haben. RewriteRule ^index.htm$ /index.php Dies ist die eigentliche Regel, beginnend mit RewriteRule um den Anfang zu kennzeichnen. Als nächstes folgt die Adresse, die umgeschrieben werden soll, eingegrenzt durch ^ und $, danach das Ziel, als absoluter Pfad, deshalb ist das / am Anfang auch so wichtig. Dies ist natürlich eine der einfachen Arten URLs umzuschreiben. Falls man aber hunderte solcher Fälle hat, wird das ganze auf diese Weise sehr umständlich. Sie bräuchten hundert Einträge in Ihrer .htaccess um alle Umleitungen abzufangen. Und genau hier kommen die Regulären Ausdrücke mit ins Spiel, auf die wir nun näher eingehen werden. Diese Ausdrücke werden dazu verwendet eine ganze Klasse von Suchwörtern abzudecken. Ein einfaches Beispiel für reguläre Ausdrücke wird Ihnen bei der Datenbankanfrage Sprache SQL untergekommen sein. Die dort verwendeten Ausdrücke mit dem % Operator sind nichts anderes, als Reguläre Ausdrücke. Er ist eine Art Platzhalter, so wie früher zu alten DOS Zeiten oder unter Linux ein dir *.txt oder ls *.txt. Gebe mir alle Dateien zurück, die mit .txt enden. Dies würden die beiden dir und ls Befehle ausführen. Und genau einen solchen Ausdruck brauchen wir ja: Nimm alle .htm Dateien und leite Sie auf index.php um. Versuchen wir uns also an unserer .htaccess Datei. RewriteRule ^(.*).htm$ /index.php Der (-*) Operator ist das mod_rewrite Pendant zu dem Stern auf der Dateiebene und dem % in SQL Ausdrücken. Nachdem Sie diese Zeilen Code eingebaut haben, versuchen Sie mal eine kontakt.htm auszuführen. Sie werden merken, dass Sie nun in Ihrer index.php landen. Natürlich sind wir noch lange nicht an den Grenzen des mod_rewrite. Aber wir nähern uns so langsam an unser Ziel an. Der groößte Vorteil des (.*) Operators ist, dass die Werte, die dort "abgefangen" werden Ihnen jetzt auch zur Verügung stehen. Sie können Sie also in Ihre Ziel URL einbauen. RewriteRule ^/(.*).htm$ /$1.php Unser erstes Teilziel ist nun erreicht, eine kontakt.htm wird auf kontakt.php umgeleitet, genauso wie eine impressum.htm auf impressum.php weitergeleitet wird. Mit dem Wissen, dass Sie jetzt erlang haben, können Sie schon eine ganze Menge machen, wie die folgend aufgeführten Beispiele Ihnen demonstrieren werden. RewriteRule ^(.*).htm$ /index.php?action=$1 CMS verstecken RewriteRule ^/(.*)/index.htm$ /$1.php RewriteRule^ /user/(.*).htm$ /showUser.php?user=$1 über den ersten Ausdruck können Sie dem Surfer und den Suchmaschinen eine vorhandene Verzeichnisstruktur vorgaukeln. Den zweiten wüde ich verwenden um jedem Mitglied Ihrer Community eine eigene "schöne" URL zu geben. |