.htaccess Redirect – URLs effizient weiterleiten

Wenn man eine Website umsiedelt oder auch neu gestaltet, so kann es passieren, dass man alte Links auf ein neues Ziel umleiten muss. Solche Umleitungen kann man mit einem .htaccess Redirect realisieren. Es gibt auch die Möglichkeit des .htaccess Rewrite – doch damit beschäftigen wir uns in einem anderen Artikel.

Wozu benötige ich ein .htaccess Redirect?

Mit einer .htaccess Redirect Umleitung, kann man verschiedene Szenarien mit nur einer Datei abfangen. Wie beispielsweise Anfragen auf ein altes Verzeichnis auf ein neues Verzeichnis umleiten oder den Suchmaschinen mittels Code sogar mitteilen, um welche Art Weiterleitung es sich handelt.

Redirect 301 /alter-ordner/ https://www.deinedomain.com/neuer-ordner/

Mit dieser Zeile werden beispielsweise alle Anfragen Deiner Domain auf /alter-ordner/ auf https://www.deinedomain.com/neuer-ordner/ umgeleitet. Wichtig in diesem Zusammenhang: Das Ziel sollte immer die ganze URL beinhalten, auch wenn die Domain identisch ist. Obwohl das natürlich auch möglich ist:

Redirect 301 /alter-ordner/ /neuer-ordner/
Redirect 301 /ordner/alte_datei.pdf https://www.deinedomain.com/ordner/noch_ein_ordner/neue_datei.pdf

Selbstverständlich kannst Du auch den Zugriff auf alte Dateien umleiten, ganz egal wo sich die neue Datei befindet.

Redirect 301 /ordner/alte_datei.pdf https://www.deinedomain.com/

Wenn eine Datei – order Ordner – nicht mehr existiert, kannst Du auch indidivuelle Ziele, wie z.B. Deine Startseite hinterlegen.

Du siehst, Du kannst mit einem .htaccess Redirect bequem steuern, wohin Zugriffe gelangen sollen, wenn der alte Pfad nicht mehr existiert oder nicht mehr angesprochen werden soll. Wie man so eine .htaccess Redirect Umleitung baut, sehen wir uns noch genauer an.

Wie erstelle ich ein .htaccess Redirect?

Eine .htaccess Datei existiert bei den meisten WordPress Installationen bereits. Diese liegt im Hauptverzeichnis und regelt dort alle Zugriffe und Weiterleitungen Deiner ganzen Webstruktur. Ein .htaccess Redirect kannst Du also bequem in die bestehende .htaccess Datei einbetten. Es kann nämlich immer nur eine .htaccess Datei pro Ordner existieren.

Wenn Du also ein .htaccess Redirect benötigst, so kannst Du das mit folgendem Code erwirken:

<IfModule mod_alias.c>
Redirect 301 /alter-ordner/ https://www.meinedomain.com
</IfModule>

In diesem Fall werden alle Anfragen von www.meinedomain.com/alter-ordner/ (oder auch www.domain.com/alter-ordner/ – wenn das .htaccess File dort liegt) auf https://www.meinedomain.com umgeleitet. Mehr braucht es dazu nicht. Hast Du weitere Umleiten, kannst Du diese bequem ergänzen wie z.B.

<IfModule mod_alias.c>
Redirect 301 /alter-ordner/ https://www.meinedomain.com
Redirect 301 /alter-ordner2/ https://www.meinedomain.com/neuer-ordner/
Redirect 301 /listen/preise.pdf https://www.meinedomain.com/preise/
</IfModule>

Achtung: Die Umleitungen werden vom Server immer von oben nach unten gelesen und ausgeführt. Das bedeutet, dass Du aufpassen musst, in welcher Zeile Du gewisse Umleitungen hinterlegst. Dies führt beispielsweise zu einem Fehler:

<IfModule mod_alias.c>
Redirect 301 / https://www.meinedomain.com
Redirect 301 /alter-ordner/ https://www.meinedomain.com
Redirect 301 /alter-ordner2/ https://www.meinedomain.com/neuer-ordner/
Redirect 301 /listen/preise.pdf https://www.meinedomain.com/preise/
</IfModule>

Es wird in diesem Fall, die erste Zeile aktiv und alle Anfragen werden auf die Startseite umgeleitet. Die anderen Zeilen werden bei einer Abfrage einen Fehler verursachen. Die allgemeine Umleitung muss also am Ende platziert werden, damit das gewünschte Ergebnis erreicht wird:

<IfModule mod_alias.c>
Redirect 301 /alter-ordner/ https://www.meinedomain.com
Redirect 301 /alter-ordner2/ https://www.meinedomain.com/neuer-ordner/
Redirect 301 /listen/preise.pdf https://www.meinedomain.com/preise/
Redirect 301 / https://www.meinedomain.com
</IfModule>

So zeigt man es Dir – doch so ist es falsch!

Wenn Du nach .htaccess Redirect suchst, werden Dir viele Beispiele und auch Generatoren gezeigt, die Dir dieses Thema ebenfalls erklären und näher bringen wollen. Meistens wird Dir doch immer der gleiche Fehler gezeigt. Wie auch z.B. der Htaccess 301 Redirect Generator

Ganz abgesehen davon, dass es keine Erklärung gibt, wie ein alter und ein neuer Pfad in dem Generator zu hinterlegen ist, spuckt der Generator auch einen falschen Code aus. Dieser funktioniert zwar, ist aber technisch gesehen trotdzem falsch:

Der .htaccess Redirect Generator liefert keine gute Lösung
Der Htacess 301 Redirect Generator ist nicht sehr hilfreich

Erkennst Du das Problem? Hier ist die Lösung.

Wie Du an der Ausgabe erkennen kannst, werden folgende Codes ausgegeben:

<IfModule mod_rewrite.c>
RewriteEngine On

Das ist jedoch bei einem .htaccess Rewrite der Fall. Wir wollen allerdings ein .htaccess Redirect. Denn in der nächsten Zeile sieht man ja auch, dass ein Redirect 301 erwirkt wird. Es werden also zwei Methoden vermischt, was technisch nicht korrekt ist. Korrekt wäre:

<IfModule mod_alias.c>

Zusätzlich hat der Generatornicht erkannt, dass der alte Pfad ohne / angegeben wurde. Diese Umleitung wird also in einen Fehler laufen. Korrekt wäre diese Ausgabe bzw. Zeile:

Redirect 301 /mein-alter-ordner/ https://www.meinedomain.com/neuer-ordner/

Generatoren und Blog-Beiträge die dieses Thema erklären und näher bringen, sollen Dir helfen Dein Ziel zu erreichen und nicht weitere Hindernisse einbauen. Wenn Deine Umleitungen nämlich nicht funktionieren, kann Dir die Fehlersuche viel Zeit und Nerven rauben. Vor allem, wenn Dir ein Blog-Beitrag oder ein ein Generator sagt, dass Du alles richtig machst.