Sven Rautenberg: korrekter HTTP-Statuscode für 404...

Beitrag lesen

Moin!

"Wenn also ein 404-Statuscode (im Header) vom CGI-Programm an den Apachen gesendet wird,..."

Wieso CGI? Du arbeitest mit PHP als Apache-Modul, da ist nirgendwo CGI im Spiel.

Außerdem überlege mal:
Was soll der arme Apache denn machen, wenn jemand anderes einen 404 als Header sendet, aber nicht die Apache-festgelegte 404-Seite haben will, sondern eine eigene.

Soll der Apache jetzt entscheiden "Hat keinen Body gesendet, da hänge ich mal meinen dran"? Warum dies? Es gibt einige Statuscodes, an die gehört kein Body.

Also: Die Verantwortung liegt komplett in Händen des Skriptschreibers, inklusive aller Header und Bodys - ohne dass der Apache sich dann um irgendwas kümmert. Und das ist gut so.

btw: Meine Lösung -> [pref:t=80707&m=469673]. Nachdem ich die erste Headerzeile mit dem 404 ausgebe, kommt noch ein "Location"-header, der den Client auf eine ordentliche 404-Seite verweist[1].

Du mischst HTTP-Status 404 und 301/302. Das ist böse. Denn was soll da rauskommen? Entweder ist die Seite 404, dann wird der mitgesendete Body angezeigt, um den Benutzer über den Fehler zu informieren.

Oder die Seite ist 302. Dann schickt der Browser einen neuen Request an den Server, um diese Seite anzufordern. Das bedeutet aber insbesondere für Suchmaschinen: Die Seite ist eben gerade NICHT 404. Man konnte dem Link folgen, dort wurden Redirects bis zum eigentlichen Content gefunden - also rein in die Datenbank.

- Sven Rautenberg