Was moderne CMS‘ (Content Management Systeme) wie WordPress oder Joomla an Suchmaschinen-Optimierungs-Möglichkeiten (SEO) von Haus aus oder mit einer simplen Intstallation eines Plug-Ins mitbringen, war bis vor ein paar Internetjahrhunderten (5-8 Menschen-Jahre) so noch nicht oder nur schwer umsetzbar. Überall im Netz traf man auf URL’s in der folgenden Form:
http://www.meine-firma.com/script_b12.php?product=12&action=delete
Nicht das diese Seiten funktionale Einschränkungen hätten, aber sind sie doch von Suchmaschinen nur schwer oder richtig zu interpretieren, da die URL keine Keywords enthält und aus der URL nicht auf die Struktur der Website geschlossen werden kann. Dem Besucher der Website bietet Sie aus Usability-Sicht nicht die Möglichkeit, wie bei der folgenden URL, durch entfernen eines URL Abschnittes in die logisch höhere Ebene zu gelangen:
http://www.meine-firma.com/produkte/schuhe/sneaker/ http://www.meine-firma.com/produkte/schuhe/
Mit Hilfe des mod_rewrite Modul des Apache Webservers ist es nun möglich verschiedenste Manipulationen an Website-Adressen vorzunehmen, um die oben beschriebenen Probleme zu lösen.
Im folgenden zeige ich anhand aktueller Beispiele den sinnvollen Einsatz einer .htaccess Datei.
Grundeinstellungen
Die folgenden 3 Zeilen sind in (nahezu) allen .htaccess-Dateien vorhanden.
#Aktivierung des Apache Modul RewriteEngine On #Es werden von Apache Symbolische Links innerhalb des Verzeichnisses aufgelöst Options +FollowSymLinks #Das explizite Setzen der Basis-URL für die weiteren Manipulation. RewriteBase /
Doppelten Content vermeiden
Um doppelten Content zu vermeiden, gilt es, sich auf einen Domain-Namen mit einer Schreibweise zu konzentrieren. So sollte entweder die Domain immer mit www beginnen oder eben nie. Wenn mehrere Domainnamen auf ein und den selben Content zeigen, sollte entweder www.firma.com oder www.firma.de verwendet werden. Im folgenden Beispiel, soll immer auf www.firma.com gezeigt/umgeleitet werden.
# erfolgt ein Aufruf ungleich www.firma.com? RewriteCond %{HTTP_HOST} !^www\.firma\.com [NC] # dann leite auf die folgende URL weiter: RewriteRule ^(.*)$ http://www.firma.com/$1 [R=301,L]
Trailing slash Problem
Doppelter Content durch das erreichen ein und derselben Informationen über eine URL die mit einem Trailing Slash (/) abschließt und die gleiche Information die ohne einen Backslash zu erreichen ist, stellt für viele Suchmaschinen doppelten Content dar und kann deshalb zu Problemen führen.
#schließe existierende Dateien RewriteCond %{REQUEST_FILENAME} !-f #Ignoriere URL's die mit .htm enden RewriteCond %{REQUEST_URI} !.+\.htm #es erfolgt ein Aufruf ohne trailing slash RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ http://www.firma.com/$1/ [L,R=301]
Ausschließen von zu neugierigen Blicken
In der Regel können es nicht viele Besucher genug sein. Es kann aber auch sein, dass man bestimmte Besucher ausschließen möchte. Im folgenden Beispiel über das ausschließen einer bestimmten IP-Adresse.
RewriteCond %{REMOTE_ADDR} ^217.19.250.17 RewriteRule ^.* - [F]
Alle Anfragen mit einer zentralen Datei bearbeiten
Damit alle Anfragen mit einem zentralen script verarbeitet werden können und die komplette Logik in das script wandert, bietet sich folgender Ansatz an.
#Es wird geprüft, ob es sich um eine vorhandene Datei handelt. RewriteCond %{REQUEST_FILENAME} !-f #Es wird geprüft, ob es sich um ein vorhandenes Verzeichnis handelt. RewriteCond %{REQUEST_FILENAME} !-d #Verarbeite alles mit der index.php Datei. RewriteRule (.*) index.php
Link: Gutes Tutorial und großes Forum in deutscher Sprache: modrewrite.de
Als Chefkoch arbeite ich als Systemadministrator und Programmierer. Hier blogge ich über Joomla, Magento, WordPress und Windows. In meiner Freizeit fotografiere ich viel, fahre mit meiner Yamaha XT660R oder Jogge durch die Gegend.