Seite 1 von 1

HTTP/1.1 200 OK statt HTTP/1.1 404 Not Found

Verfasst: 12.03.2009 15:26
von datenverdrahter
Wenn man per MOD_REWRITE alle .html-Seiten auf .php umleitet, so muss man per PHP den HEADER 404 ausgeben, wenn ein Link ungültig ist:

Code: Alles auswählen

<?php

function url_ok() { ... }

if( !url_ok() ) {
  header('HTTP/1.1 404 Not Found');
  exit;
}

?>

Prüfe ich jedoch mit Curl eine nicht vorhandene Seite:

Code: Alles auswählen

curl --head www.domain.xx/xyz.html


Der Befehl header('HTTP/1.1 404 Not Found') wird auf jeden Fall durchlaufen, aber ich bekomme trotzdem diesen Header:

Code: Alles auswählen

HTTP/1.1 200 OK
Date: Thu, 12 Mar 2009 14:23:17 GMT
Server: Apache/1.3 (Unix) mod_ssl/2.8.28 OpenSSL/0.9.8f AuthPG/1.3
X-Powered-By: PHP/5.2.6
Connection: close
Content-Type: text/html


Was kann die Ursache sein? Es wurde vorm header-Befehl noch nix gesendet, sonst würde PHP meckern.

Viele Grüße

Egon Schmid

Verfasst: 12.03.2009 15:36
von Gumbo
Was passiert denn wenn du vorher etwas ausgibst? Vielleicht ist ja bei dir PHP so eingestellt, dass alle Fehler unterdrückt werden.

Verfasst: 12.03.2009 17:02
von datenverdrahter
Gebe ich davor etwas aus, kommt natürlich dies:

Warning: Cannot modify header information - headers already sent by ....

Verfasst: 12.03.2009 21:37
von Gumbo
Probier mal Folgendes:

Code: Alles auswählen

header('HTTP/1.1 404 Not Found', true, 404);