URL rewrite oder unsere Adresse soll schöner werden

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*