Apache mod_rewrite Übersicht: So leiten Sie Anfragen weiter
Viele Administratoren und Kunden wollen immer wieder dieselben Weiterleitungen einrichten. Deshalb stellen wir hier die wichtigsten Möglichkeiten zusammen wie man in Apache mit Hilfe des Rewrite Moduls Weiterleitungen einrichten kann. Falls eine wichtige Möglichkeit fehlt, schreiben Sie uns das gerne in den Kommentaren oder per E-Mail.
Inhaltsverzeichnis
Weiterleitung von http auf https
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Von oben nach unten:
- RewriteEngine anschalten. Falls Sie bereits die RewriteEngine aktiviert haben, muss sie hier nicht zwingend noch einmal angeschaltet werden. Wir haben aber oft VirtualHosts auf Port 80 laufen, deren einzige Aufgabe es ist die Anfragen an den Port 443 mit der SSL Verschlüsselung weiter zu leiten.
- Die Bedingung sagt, "wenn HTTPS nicht an ist", dann führe die Regel aus.
- Zeile:
- Die vollständige Anfrage (.*) soll ersetzt werden.
- Durch ein Leerzeichen getrennt folgt die Zieladresse wohin weitergeleitet werden soll.
- In den eckigen Klammern stehen spezielle Anweisung, hier, dass mit einem permanent Redirect (R=301) weitergeleitet werden soll und, dass dies die letzte Regel (L) ist, die ausgeführt werden soll.
Auf einen bestimmten Hostnamen weiterleiten
Die Weiterleitung auf definierte Hostnamen hilft dabei, Duplicate Content zu vermeiden. Damit sorgt man dafür, dass die eigene Seite z.B. nur über www.adresse-im-netz.de und nicht über adresse-im-netz.de aufgerufen werden kann, indem alle Anfragen an andresse-im-netz.de an www weitergeleitet werden.
RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.adresse-im-netz\.de$ [NC] RewriteRule ^/(.*)$ http://www.adresse-im-netz.de/$1 [L,R=301]
Von oben nach unten:
- Rewrite Engine anschalten
- Bedingung definieren
- HTTP_HOST, also der aufgerufene Servername wird analysiert
- Das Ausrufezeichen negiert den Vergleich, bedeutet hier also HTTP_HOST ist nicht im nachfolgenden regulären Ausdruck enthalten
- Das Caret (^) gibt an, dass wir von Anfang an prüfen
- Innerhalb eines regulären Ausdruckes ist der Punkt (.) ein
- Das Dollarzeichen ($) gibt an, dass bis zum Ende geprüft wird
Von einem bestimmten Hostnamen auf ein Unterverzeichnis einer anderen Seite weiterleiten
Wenn Seiten in bestehende Seiten z.B. als Kategorien integriert werden, ist es nützlich von dem bisherigen Hostnamen der alten Seite auf die Kategorieseite der neuen Seite weiterzuleiten.
RewriteEngine On RewriteCond %{HTTP_HOST} ^blumen\.adresse-im-netz\.de$ [NC] RewriteRule ^$ /blumen [L,R=301]
Fazit
Das ist nur ein kurzer Einblick in die Welt des sehr mächtigen mod_rewrite Moduls von Apache. Wenn Sie Fragen oder spezielle Anforderungen haben, schreiben Sie doch gerne einen Kommentar oder eine E-mail.