Apache: Umschreiben von Anfragen (mod_rewrite)

Diese Anleitung erklärt das

  • Umleiten aller Anfragen von http auf https
  • Umleiten von Request von ihredomain.de auf www.ihredomain.de
  • Umleiten von Request von www.ihredomain.de auf ihredomain.de

Umleiten aller Anfragen von http auf https

Falls Sie ein HTTPS Zertifikat haben (z.B. vom Let’s encrypt-Projekt), dann ist es oft eine gute Idee, alle unverschlüsselten Anfragen (http) auf https umzuleiten. Dies können Sie mit folgenden Rewrite-Regeln erreichen:

RewriteEngine        on
RewriteCond          %{HTTPS} !=on
RewriteRule          ^/?(.*) https://%{HTTP_HOST}/$1 [R,L]

Möchten Sie nur bestimmte Hosts umleiten benutzen sie folgende Regel:

RewriteEngine        on
RewriteCond          %{HTTP_HOST} ^www.besondere-domain\.de [NC]
RewriteCond          %{HTTPS} !=on
RewriteRule          ^/?(.*) https://%{HTTP_HOST}/$1 [R,L]

Erklärung:

  1. Schalten den RewriteEngine an
  2. Prüfe, ob der Host mit www.xas.de beginnt; wenn ja, [C]haine mit der nächsten RewriteCond, [N] belegt alle Werte so wie vor der Cond
  3. Prüfe, ob es sich nicht schon um eine https-Verbindung handelt
  4. Matche alles, was nach dem führend “/” kommt und speicher den Wert in $1, dann schreibe die URL wie folgt um: String “https//”, Variable “HTTP_HOST”, String “/”, dann Inhalt der Variable $1 aus dem regulären Ausdruck. Zum Schluss wird der [R]edirect ausgeführt und es findet keine weitere Verarbeitung statt([L]ast)

Prefix “www” dem Domainnamen in der URL hinzufügen

Um Anfrage auf beispiel.de auf www.beispiel.de umzuleiten, fügen Sie den folgenden Code ihrer .htaccess-Datei hinzu:

RewriteEngine on
RewriteCond %{HTTP\_HOST} ^beispiel\\.de$ [NC]
RewriteRule ^(.\*)$ http://www.beispiel.de/$1 [R=301,L]

Diese Regel veranlassen den Webserver den Domainanteil der URL darauf zu prüfen, ob er “bespiel.de” lautet. Ist das der Fall, wird der Besucher auf die URL “www.beispiel.de” umgeleitet.

Sollten Sie z.B. auch noch die Domain beispiel.com und oder andere Domains besitzen, die Sie ebenfalls auf www.beispiel.de umleiten wollen, können Sie auch folgeden Regeln verwenden:

RewriteEngine on
RewriteCond %{HTTP\_HOST} !^www\\.example\\.com$ [NC]
RewriteRule ^(.\*)$ http://www.example.com/$1 [R=301,L]

Der zweite Regelsatz prüft die URL auf den Domainanteil www.beispiel.de. Ist das nicht der Fall, dann wird der Besucher auf www.beispiel.de umgeleitet. De facto wird jede URL, deren Domainanteil nicht www.beispiel.de lautet auf diese URL umgeleitet.

Prefix “www” aus dem Domainnamen in der URL entfernen

Um jede URL, deren Domainteil in der URL www.beispiel.de lautet auf beispiel.de umzuleiten, fügen Sie folgende Regeln zur .htaccess-Datei hinzu:

RewriteEngine on
RewriteCond %{HTTP\_HOST} ^www\\.example\\.com$ [NC]
RewriteRule ^(.\*)$ http://example.com/$1 [R=301,L]

Diese Regeln prüft, ob der Domainanteil der URL www.beispiel.de beinhaltet. Falls das der Fall ist, dann wir der Besucher auf beispiel.de umgeleitet.

Bemerkung

Denken Sie daran, dass sie jedes Vorkommen von beispiel.de durch ihrern eigenen Domainnamen ersetzen. In der Zeile die mit RewriteCond beginnt, fügen Sie bitte einen Backslash (“\”) vor jedem Punkt in ihrem Domainnamen hinzu.

Das Modul mod_rewrite ist extrem mächtig und hat viele weitere Anwendungsmöglichkeiten, als die hier dargestellten. Stöbern Sie ein wenig im Internet nach dem Begriffen “mod_rewrite” und “apache”.