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:
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:
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:
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.
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:
RewriteBase /
RewriteRule ^index.(php|html)$ http://www.domain.de/ [R=301,L]
IP aussperren
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.*):
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.
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.