ErrorDocument 404 in der .htaccess korrekt umsetzen

Viktor Dite, Autor des Beitrags

Von - Publiziert in Webdevelopment Blog über MySQL & PHP
Dipl. Informatiker und Tech-Blogger seit 2006.


Gestern habe ich in der Siteclinic mit Jens Fauldrath, Hanns Kronenberg, Johannes Beus und Markus Walter nicht schlecht gestaunt, dass meine richtig geglaubte ErrorDocument 404 Anweisung in der .htaccess einen 302 Redirect (temporäre Umleitung) auf eine Seite mit einem 200 Header (Seite gefunden) ausspuckt!

Kann Fatal werden, da zum Einen alle falsch gesetzten Links von Google nicht erkannt werden und zum Zweiten so seher viele Duplicate Content Seiten entstehen (können).

Bist Du auch betroffen?

Das lässt sich ziemlich einfach herausfinden. Hanns hat mir einen tollen Tipp gegeben, wie man mit Google selbst so ein Problem findet. Wird der 404 nämlich nicht korrekt umgesetzt, landet die 404 Fehlerseite im Index von Google und das kann man dann mit allinurl:404 site:deinedomain.de und diversen Abwandlungen (intitle, inurl, incontent und mit ‚Fehler‘, ’nicht gefunden‘, usw.) im Google Suchschlitz testen.

Bekommst Du bei der Abfrage ein oder gar mehrere Ergebnisse, dann stimmt etwas mit der 404 Fehlerseite nicht! Bei korrekter Umsetzung darf nämlich so eine 404 Fehlerseite nicht im Index von Google sein!

Alternativer Test

Wenn Du eine Konsole zur Hand hast, kannst Du das auch schnell mit einer cURL Abfrage testen:

cURL -I -L http://deinedomain.de/nicht-vorhandene-seite

Die Optionen -I und -L liefern dann nur den Header der Webseite zurück.

Der Fehler

Mein Fehler lag in der Anweisung des ErrorDocument selbst. Hier darf nicht die Domain als Ziel angegeben werden!

ErrorDocument 404 http://www.DeineDomain.de/error404.html

Ergebnis

vd$ curl -I -L https://mizine.de/ters
HTTP/1.1 302 Found
Date: Wed, 08 Feb 2012 10:09:41 GMT
Server: Apache/2.2.4 (Linux/SUSE)
Location: http://mizine/error-404.php

HTTP/1.1 200 OK
Date: Wed, 08 Feb 2012 10:09:41 GMT
Server: Apache/2.2.22
X-Powered-By: PHP/5.2.13
Vary: Accept-Encoding
Content-Type: text/html

Die korrekte Lösung

Es darf nur der relative Pfad zur Datei angegeben werden!

ErrorDocument 404 /error404.html

Ergebnis

vd$ curl -I -L https://mizine.de/ters
HTTP/1.1 404 Not Found
Date: Wed, 08 Feb 2012 10:12:12 GMT
Server: Apache/2.2.22
X-Powered-By: PHP/5.2.13
Vary: Accept-Encoding
Content-Type: text/html

Vielen herzlichen Dank für die Lösung an micah carrick

error 404 mit htaccess korrekt ausgeben


Letzte Änderung: