404er als 301er auf Startseite umleiten

Grade dann, wenn man sich eine expired domain zulegt, taucht öfter ein Problem auf: Die 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.

 

« | Home | »


SISTRIX Toolbox - Das SEO-Werkzeug

SISTRIX Toolbox - Das Werkzeug für SEO Profis
Hol dir deinen SISTRIX Toolbox Zugang!

SEO Scene - powered by wpSEO

wpSEO optimiert Blogs für Suchmaschinen - automatisch und effizient.

Über diesen Artikel