phpbar.de logo

Mailinglisten-Archive

{Spam?} Re: [php] header("HTTP/1.0 404 Not Found");

{Spam?} Re: [php] header("HTTP/1.0 404 Not Found");

Götz Lohmann goetz at mrblackrose.de
Mon Nov 15 18:31:12 CET 2004


Kay Häusler schrieb:

>Guten Abend,
>
>ich möchte den Browser eine 404 Meldung ausliefern lassen
>
>laut http://de3.php.net/header sollte folgendes funktionieren
>
>  
>
>>header("HTTP/1.0 404 Not Found");
>>header("Status: 404 Not Found");
>>    
>>
>
>das macht aber nur der Internet Explorer
>Opera und Firefox zeigen einfach eine weiße Seite an
>
>das selbe kommt auch wenn ich folgendes mache
>
>  
>
>>require_once('HTTP/Header.php');
>>$http_header = new HTTP_Header();
>>$http_header->sendStatusCode('404');
>>    
>>
>
>wo ist mein Denkfehler?
>oder ist das ein Problem von Opera und Firefox?
>

It's not a BUG it's a Feature :-)

Das Problem dahinter ist das Du einen Header sendest mit der Aussage das
der Server keine Datei zum anzeigen finden konnte jedoch der WebServer
selbige bereits am parsen und ausgeben ist (und für sich selbst bereit
entschieden hat das alles 200 OK ist) .. die Fehlermedlung 404 bedeutet
das normalerweise der Webserver selbst eine 404 Fehlerseite anzeigt mit
eventuellen weiteren Informationen zu diesem Fehler. Das heißt ein
anständiger Webserver liefert trotz des Fehlers 404 dennoch Daten,
nämlich die des ErrorDocuments!
Demzufolge verhalten sich Opera und Firefox ganz korrekt, sie zeigen
nämlich diesen Inhalt an .. der im Moment halt Leer ist .. wenn Du NACH
dem header Befehl also noch Text sendest, wird genau dieser angezeigt:

<?php
    header("HTTP/1.0 404 Not Found");
?>
Dies ist ein 404 Fehler!


Der Internet Explorer hingegen ist so selbstverliebt, das er, wenn keine
404 Webseite zurück bekommt lieber eine eigene Seite anzeigt. Das
versenden eines solchen Headers dient AFAIK mehr dazu falls die
Dokument-Fehler-Anweisung 404 des Apache auf ein PHP-Skript zeigen soll,
auf gut Deutsch falls das ErrorDocument das von Apache angezeigt wird
selbst ein PHP Script ist und beim anzeigen nicht versehentlich 200
sondern wissentlich 404 zurückliefert. Weiterhin muß beachtet werden das
der Status 200 und 404 zur selben Gruppe gehören, also keine neue
Anforderung wie ein Redirect etc. auslösen!

regards, G. Lohmann

php::bar PHP Wiki   -   Listenarchive