htaccess - individuelle 404 Weiterleitung einrichten

Auf einer Webseite kommt es des öfteren vor, dass eine Seite nicht gefunden wird. Die klassische 404 Fehlermeldung tritt ein. Die Gründe hierfür können vielfältig sein: eine Seite wird gelöscht, eine falsche URL wurde gefunden oder Google hat eine falsche URL im Index. In allen Fällen möchte man dem Leser freundlich mitteilen, dass die Seite nicht verfügbar ist. Und ihn nicht den kryptischen Fehlermeldungen eines Webservers überlassen.

Eine Weiterleitung auf eine individuelle und persönlich gestaltete 404-Fehlerseite, wie man es beispiel von Googles Fehlerseite kennt, hilft bei diesem Problem. Und hierfür erstellt man einfach eine neue HTML-Seite und trägt diese folgendermaßen in die .htaccess-Datei ein:

ErrorDocument 404 /404.html

Achtung: Fehlerquelle

Die Weiterleitung sollte man auf jeden Fall überprüfen und sich den so genannten HTTP-Header ausgeben lassen. Folgender kleiner Fehler bringt fatale Folgen mit sich:

# Achtung, so nicht übernehmen 
ErrorDocument 404 htttp://www.domain.de/404.html

Manche machen den Fehler und schreiben die eigene Domain an den Anfang. Der Server leitet nun brav auf die Fehlerseite weiter, liefert aber einen falschen HTTP-Header zurück. Unter Linux kann man für die Anzeige des HTTP-Headers das Tool curl verwenden. Alternativ gibt es zahlreiche kostenlose Online-Dienste wie von seoconsultants.com.

Schauen wir uns den HTTP-Header mit dem falschen Beispiel einmal an:

 # curl -I -L http:// www. domain.de/michgibbetnicht
HTTP/1.1 302 Found
Date: Tue, 25 Mar 2012 20:45:39 GMT
Server: Apache
Location: http:// www. domain.de/error410.php
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 200 OK
Date: Tue, 25 Mar 2012 20:45:39 GMT
Server: Apache
X-Powered-By: PHP/5.2.16
Content-Type: text/html

Fataler Fehler!Der Server sagt, dass wir eine einfache Weiterleitung (302 Found) auf die neue Seite machen, und diese Seite erreichbar ist (200 OK). Das ist ein klassischer Umzug einer URL und das wollen wir sicherlich nicht! Der Grund liegt darin, dass der Apache-Webserver glaubt, dass er auf eine externe Domain das Fehlerdokument findet. Daher macht er automatisch eine 302-Weiterleitung.

Entfernt man die Domain und macht aus einem www.domain.de/404.html ein einfaches /404.html, gibt der Apache Webserver auch den korrekten HTTP-Code zurück:

  # curl -I -L http:// www. domain.de/michgibbetnicht
HTTP/1.1 404 Not Found
Date: Tue, 225 Mar 2012 20:48:13 GMT
Server: Apache
X-Powered-By: PHP/5.2.16
Content-Type: text/html

Suchmaschinen wie Google wissen nun, dass die Seite in Wirklichkeit nicht existiert und nehmen diese aus dem Index

Fazit

Bei automatischen Weiterleitungen mittels htaccess sollte man immer die HTTP-Headers analysieren. Was auf den ersten Blick korrekt aussieht, muss nicht zwingend korrekt sein.