Suche
Suche Menü

404er als 301er auf Startseite umleiten

Wenn man sich eine expired domain zulegt und dort ein neues Projekt anlegen will (also die expired nicht einfach auf ein anderes Projekt routet), taucht in der Regel ein Problem auf: Die bestehenden Links auf Unterseiten gehen ins Leere. 404 – not found. Unschöne Sache. Bei nur ein oder zwei Unterseiten, die angelinkt werden, mag dies kein Problem sein. In diesem Fall fügt man in der .htaccess nach diesem Muster etwas ein:

Redirect 301 /ordner/unterseite.html http://www.domain.de/andererordner/tollereseite.php

Damit wird der Link zu der Unterseite auf eine tollere Unterseite per 301er weitergeleitet. Aber was ist, wenn da gleich viele Links sind?

Bei WordPress oder Joomla mit einer zentralen Datei ist auch das easy. Bei WordPress einfach in der header.php ganz oben einfügen:

<?php if( is_404( )) { header(“Location: /”,TRUE,301); } ?>

Ab dann werden alle Aufrufe, die an sich einen 404er erzeugen würden, per 301er auf die Startseite gelenkt.

Doch was ist, wenn keine zentrale Datei zur Verfügung steht, die grundsätzlich im Spiel ist? Sondern jede URL ihre eigene Datei hat wie bei normalen statischen Seiten?

Ich habe mal im Netz recherchiert und vieles gefunden, was nicht funktioniert. Oder jemand hat eine Lösung präsentiert, die den 404er auf eine zu erzeugende Unterseite lenkt, die dann wiederum den 301er auslöst. Viel zu umständlich. Auf den Lösungsweg brachte mich ein alter Forenbeitrag von Fridaynite, der allerdings ebenfalls nicht wirklich funktionierte. Doch der Grundgedanke brachte mir die Lösung – folgender Code muss in die htaccess:

ErrorDocument 404 http://www.domain.de/index.php
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^.]+).(de)
RewriteRule ^(.*) http://www.%1.%2/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(html?|php)\ HTTP/
RewriteRule ^index\.(html?|php)$ http://www.domain.de/ [R=301,L]

Einfach domain.de durch den Domainnamen ersetzen. That’s it. Mag sein, es geht noch ein Stückchen eleganter. Aber man schlägt mit dieser Version gleich drei Fliegen mit einer Klappe:

Die erste Zeile sorgt dafür, dass alle 404er auf eine Fehlerseite gelenkt werden. Dies ist die index.php im Rootverzeichnis. Aber natürlich wollen wir die schon mal gar nicht, sondern die Startseite soll immer unter domain.de zu finden sein. Dies erledigen die letzten beiden Zeilen – und nehmen die 404er Fehlerseite per 301er gleich mit. Die beiden Zeilen davor sind der Standard, um domain.de auf www.domain.de weiterzuleiten.

Wer grundsätzlich auf domain.de statt www.domain.de steht, verwendet dies hier:

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.de$ [NC]
RewriteRule ^(.*)$ http://domain.de/$1 [R=301,L]

Der komplette Code inklusive der 404/301er sähe also bei Präferierung von URL ohne www so aus:

ErrorDocument 404 http://domain.de/index.php
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.de$ [NC]
RewriteRule ^(.*)$ http://domain.de/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(html?|php)\ HTTP/
RewriteRule ^index\.(html?|php)$ http://domain.de/ [R=301,L]

Damit sollten alle Fälle abgedeckt sein. Have Fun! Und Verbesserungsvorschläge sind stets willkommen.

Autor:

Frank Doerr (aka Loewenherz) ist seit 1996 online, Geschäftsführer der Online-Marketing Agentur Spinpool GmbH und Inhaber der Webdesign-Agentur Wolke23. Fachjournalist (bdfj) und Buchautor. Er hält Vorträge auf SEO-Konferenzen, organisierte den SEO Stammtisch Rhein-Main und hat die erste offizielle Dokumentation der SISTRIX Toolbox verfasst. In den 90ern Lehrauftrag an der FH Frankfurt/Main, 2015 an der Hochschule Darmstadt, Fachbereich Informationswissenschaft.

13 Kommentare

  1. Erster.
    Nee, kommt noch was:-).
    Ich setzte gerne WordPress auf expired Domains auf. Wenn das Theme ne 404.php hat ists ganz einfach.
    Zuerst mal nen
    < ?header("HTTP/1.0 200 OK"); ?>
    ausgeben ganz oben so das eine “korrekte” Seite zurückgegeben wird.

    Dann nen Kalender drauf oder ne Sitemap und schon verteilt sich die Linkpower auf alle vorhandenen Posts / Seiten.

    Hatte dies vorher nicht da stand ich mit nem Key auf PLatz 12. Nach der Modifizierung der 404.php ist das schön auf 6 hoch 🙂

  2. Ob es sinnvoller ist, hinter den 404er nen 301er oder nen 200er zu setzen, müsste man diskutieren 😉 Eine interessante Idee ist es jedenfalls, anstelle der Startseite eine Sitemap zu nehmen. Für den User, da er gleich einen Überblick hat, was sich alles so auf der Seite befindet, und sofern man die Linkpower verteilen mag.
    Bei meinen aktuellen Fällen sind die expireds allerdings so genutzt, dass dieser Variante keinen Sinn macht *g* Aber gut, sie als Alternative im Hinterkopf zu haben.

  3. Sehr gut,
    so etwas in der Art hatte ich bislang in der .htaccess gelöst. Muss nochmal heraussuchen was ich da genau gemacht habe. Wenn es etwas Sinnvolles ist poste ich das später noch.

  4. Wenn ich die erste der drei kompletten htaccess Beispiele einsetze, liefert mein Server bei Aufruf einer nicht existierenden Seite übrigens einen 302 Redirect, nicht 301, wie es eignetlich in den rules steht. Keine Ahnung, ob das evtl. nur an meiner Serverkonfiguration liegt, aber ich würde das auf jeden Fall mal testen…

  5. Schöne Sache! Danke für den Tipp!

  6. Pingback: Markus.vc

  7. Deine Lösung alle Unterseiten mit dem umständlichen Code umzuleiten ist denke ich Schwachsinn.

    Diese Redirect reicht völlig:
    Redirect 301 / http://www.domain.de/

    Leitet gleich alles per 301 auf die neue Domain weiter.

  8. Es geht hier um ein neues Projekt auf einer expired Domain. Mit deinem Code wäre eine Projektierung nicht möglich, da dann alles auf die Startseite ginge… Ist ein wenig missverständlich formuliert zu Anfang des Artikels, wird umgehend korrigiert.

  9. Pingback: 404 – tote Links vermeiden Hapke Media

  10. Hallo, wir verwenden

    in WordPress. Frage: Gibt es eine Möglichkeit, die 404er Seiten auf die Startseite umzuleiten und gleichzeitig einen Code 410 auszugeben, damit die Seiten aus dem Google-Index fallen?

  11. Bei WordPress ist es doch noch viel einfacher. Einfach das Plugin Redirection installieren. Hier kann man dann ganz bequem den Juice so verteilen, wie man es braucht

    @Uwe: Die Sitemap kann man mit diesem Plugin lösen: WP Realtime Sitemap installieren. Einfach Seite erstellen und den Shortcode einbauen 🙂

    Schönen Samstag noch

    Hendrik

  12. Klasse Tipp, vielen Dank. Habs gerade in WordPress eingesetzt. Es (404 => 301) ist in der Tat bei VIELEN Links, die beispielsweise nach Systemumstellung nicht mehr funktionieren, aber von Google (Webmasterzentrale) angemahnt werden, sinnvoll.

    Ansonsten setzte ich eine hübsche 404 mit Suchfeld und Post-Vorschlägen ein.

  13. Das zweite mal das ich an einem Tag von deinem Blog Hilfe bekomme.. 😉
    Nice!
    Keine 2 Minuten und ich war fertig.. ()

    Danke für die Tipps..

Kommentare sind geschlossen.