mod_rewrite – 301 Redirects per .htaccess

Gestern habe ich die Adresse meines Blogs geändert. Das war dann der Zeitpunkt, um mich etwas intensiver mit der Datei .htaccess und mod_rewrite zu beschäftigen. Ziel war, das alle alten Links weiterhin funktionieren und einfach auf die neue Domain weitergeleitet werden.

Hierzu legt man zunächst auf dem alten Webspace eine Datei .htaccess im Webserver-root an.

Als erstes muss man in die Datei

RewriteEngine On

reinschreiben. Damit wird das mod_rewrite aktiviert.

Die nächsten Befehle, die von der alten auf die neue Domain umleiten, sind dann:

RewriteCond %{HTTP_HOST} ^alte-domain.de [NC,OR]
RewriteCond %{HTTP_HOST} ^www.alte-domain.de [NC]
RewriteRule ^(.*)$ http://www.neue-domain.de/$1 [L,R=301,NC]

Das sind auch die Befehle, die ich verwendet habe – Domainnamen natürlich angepasst. Wenn man jetzt aber auch die Links innerhalb der Seite geändert hat – z.B. wenn man von einem Blog-System auf ein anderes umstellt, dann macht es unter Umständen Sinn, das man von Unterseiten der alten Domain auf die Startseite der neuen Domain verweist. Das geht so:

RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ http://www.neue-domain.de/ [L,R=301]

Seit es kostenlose SSL-Zertifikate dank Let’s Encrypt gibt, spricht auch nichts mehr dagegen, bei privaten Projekten SSL einzusetzen. Nun will man eventuell, das eine Seite nur noch per SSL ausgeliefert wird. Auch hier hilft mod_rewrite weiter. Mit dem folgenden kann man von nicht-SSL URLs auf welche mit SSL umleiten:

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Natürlich kann man mit mod_rewrite noch viel mehr machen. Aber die obigen Schnipsel sind schonmal das wichtigste, was man häufig braucht.

Schreiben Sie einen Kommentar

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