Einführung in mod_rewrite / .htaccess

Wer sieht schon gerne Links die durch Variablen Ellenlang sind und niemand nachvollziehen kann, um was es sich eigentlich handelt? Das mod_rewrite Modul des Apache Webservers kann genau an dieser Stelle helfen und die URL´s nicht nur für User (Usability) sondern auch für Suchmaschinen freundlicher gestalten.

1. Anwendungen von mod_rewrite

  • Benutzerfreundliche Urls
  • Suchmaschinenfreundliche Urls
  • Umleitungen von Domains und Urls
  • Sicherheit der Webseite erhöhen (Spamschutz erhöhen, Inhalte schützen u.s.w.)

2. Aktivierung des Apache Moduls

Oft muss man mod_rewrite erst aktivieren, weil es standardmäßig nicht installiert ist.

Normaler Webspace

Hier sollte man einfach beim Provider anfragen, ob er das Modul aktivieren kann. Manche Provider bieten auch die Möglichkeit einen PHP.ini zu hinterlegen oder per .htaccess mod_rewrite funktionstüchtig zu machen. Also entweder eine Supportanfrage machen oder mal im FAQ schauen.

Confixx

Im Confixx kann man das Modul einfach unter Einstellungen -> httpd-Spezial aktivieren.

Localer Server – Xampp

Bei Xampp einfach die Datei httpd.conf suchen und den Eintrag „LoadModule rewrite_module modules/mod_rewrite.so“ . Die Raute (#) vor dem Eintrag löschen entfernen und den Apache Server neu starten.

3. .htaccess erstellen

Als nächstes muss die htaccess Datei erstellt werden. Hier werden später die Anweisungen für das Umschreiben der Urls hinterlegt. Mit der Konfigurationsdatei ist es auch möglich Verzeichnisse mit Passwörtern zu schützen. Wie folgt sollte der Kopf der htaccess aussehen:

RewriteEngine On
RewriteBase /

„RewriteEngine On“ aktiviert man das Modul mod_rewrite, damit das Arbeiten mit der .htaccess Datei überhaupt möglich ist und „RewriteBase“ gibt das Unterverzeichnis an, in diesem Fall das Root-Verzeichnis.

4. Beispiele und Funktionen mod_rewrite

Einfach Umleitung – dynamische URL erzeugen

Bei diesem Beispiel wird news-id.html intern auf die index.php umgeleitet und die ID übergeben:

RewriteEngine On
RewriteBase /
RewriteRule ^news-([0-9]+).html$ index.php?id=$1

([0-9]+) steht für eine beliebige Zahl zwischen 0-9 mit beliebiger Länge.

Für die Suchmaschinenoptimierung ist es aber besser den Titel der Neuigkeit mit in die URL zuschreiben:

RewriteEngine On
RewriteBase /
RewriteRule ^ ([-0-9a-z]+)/([0-9]+).html$ index.php?id=$1

([-0-9a-z]+) steht für einen beliebigen Text mit beliebiger Länge, aber ohne Sonderzeichen u.s.w.

Standard-Domain festlegen

Um Duplicated Content zu vermeiden sollte unbedingt eine Standard-Domain festgelegt werden, also mit oder ohne www.

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.domain.com$
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

index.php und/oder index.html auf Root umleiten

Damit die Startseite nur über eine URL erreichbar ist, sollte man die index.html und/oder index.php auf das Root Verzeichnis umleiten:

RewriteEngine On
RewriteBase /

RewriteRule ^index.(php|html)$ http://www.domain.de/ [R=301,L]

IP aussperren

RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_ADDR} ^190.33.24.12

Diese Anweisung würde die IP 190.33.24.12 von der Seite aussperren. Einen IP-Bereich kann man wie folgt ausschließen (von 190.33.110.* bis 190.33.115.*):

RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_ADDR} ^190.33.(11[0-5]).

Seite sauber per 301 umleiten

Die beste Umleitung einer alten Domain oder von alten Links erreicht man mit mod_rewrite. Hier kann man nämlich angeben, dass es die alte URL nicht mehr gibt und nur noch über die neue erreichbar ist.

RewriteEngine On
RewriteBase /
RewriteRule ^alteurl.html$ neuurl.html [R=301,L]

R=300 gibt die permanente Weiterleitung an und L steht für die letzte Anweisung, also Verarbeitung beenden.

Fazit:

Mit dem Apache Modul mod_rewrite kann man die eigene Webseite sicherer machen, Duplicated Content vermeiden und auch die Besucher können einige Vorteile davon haben. Wer sich damit beschäftigt, sollte auch die kniffligsten Sachen hinbekommen.