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
Letzte Änderung: