Zur Navigation

HTTP-Status 200 verhindern

1 Rudy

Hi,

da kürzlich auch der Acid2-Test Aufsehen erregte, weil das WebStandards-Project eine eigene Fehlerseite eingebunden hat und somit den Status-Code 200 auch auf nicht existierende Seiten zurückgegeben hat, frage ich mich nun, ob es denn möglich ist, diesen 200er zu verhindern.

Ich bin gerade wieder selbst bei einer Seite dabei, die eine eigene Fehlerseite hat, und zwar nicht mittels der ErrorDocument-Angaben in der htaccess, sondern vom Skript generiert. Wenn jemand beispielsweise einen Newseintrag aufrufen möchte, den es nicht gibt, macht das Skript zuerst einen Select und gibt im Fehlerfall die Meldung "gibts nicht" oder so. Da mache ich immer brav vorher den 404-Header, aber ein wget zeigt mir, dass da immer noch vorher ein 200er daherkommt - was ich verstehen kann, da ja tatsächlich beim Aufruf noch nicht bekannt ist, dass es die Seite nicht gibt.

Trotzdem... kann ich das irgendwie unterbinden oder mittels weiterer Header den 200er von vorher ungültig machen?

Danke für jede Hilfe & frohe Weihnachten
Rudy

24.12.2007 16:29 | geändert: 24.12.2007 16:31

2 Jörg Kruse

Wie gibst du den Status Code aus?

1.
header('HTTP/1.1 404 Not Found');

2.
header('Status: 404 Not Found');

1. sollte AFAIK den Status Code 200 überschreiben, 2. nicht

24.12.2007 18:11

3 Rudy

Genau das wars! Zum Vergleich:

mit header('Status: 404 Not Found');

rudy@utopia:~$ wget -S http://local.domain.it/nullapretium-nam-morbi-sed-mauris-n-3-1-de.html
--13:24:55--  http://local.domain.it/nullapretium-nam-morbi-sed-mauris-n-3-1-de.html
           => `nullapretium-nam-morbi-sed-mauris-n-3-1-de.html'
Auflösen des Hostnamen »local.domain.it«.... 127.0.0.1
Verbindungsaufbau zu local.domain.it|127.0.0.1|:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort...
  HTTP/1.1 200 OK
  Date: Tue, 25 Dec 2007 12:24:55 GMT
  Server: Apache/2.2.4 (Ubuntu) PHP/5.2.3-1ubuntu6.2
  X-Powered-By: PHP/5.2.3-1ubuntu6.2
  Cache-control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
  Expires: Thu, 19 Nov 1981 08:52:00 GMT
  Last-Modified: Tue, 25 Dec 2007 12:24:56 GMT
  Pragma: no-cache
  Set-Cookie: PHPSESSID=399e9c8fedaff2864d8be5cf27aa05d4; path=/
  Set-Cookie: language=de; expires=Thu, 24-Jan-2008 12:24:56 GMT; path=/
  Status: 404 Not Found
  Content-Length: 21
  Keep-Alive: timeout=15, max=100
  Connection: Keep-Alive
  Content-Type: text/html; charset=utf-8
Länge: 21 [text/html]

Und nun mit header('HTTP/1.1 404 Not Found'):

rudy@utopia: wget -S http://local.domain.it/nullapretium-nam-morbi-sed-mauris-n-3-1-de.html
--13:24:15--  http://local.domain.it/nullapretium-nam-morbi-sed-mauris-n-3-1-de.html
           => `nullapretium-nam-morbi-sed-mauris-n-3-1-de.html'
Auflösen des Hostnamen »local.domain.it«.... 127.0.0.1
Verbindungsaufbau zu local.domain.it|127.0.0.1|:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort...
  HTTP/1.1 404 Not Found
  Date: Tue, 25 Dec 2007 12:24:15 GMT
  Server: Apache/2.2.4 (Ubuntu) PHP/5.2.3-1ubuntu6.2
  X-Powered-By: PHP/5.2.3-1ubuntu6.2
  Cache-control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
  Expires: Thu, 19 Nov 1981 08:52:00 GMT
  Last-Modified: Tue, 25 Dec 2007 12:24:15 GMT
  Pragma: no-cache
  Set-Cookie: PHPSESSID=c2e4ed2c8aaaf1b0afa9ec0fb78d1548; path=/
  Set-Cookie: language=de; expires=Thu, 24-Jan-2008 12:24:15 GMT; path=/
  Content-Length: 21
  Keep-Alive: timeout=15, max=100
  Connection: Keep-Alive
  Content-Type: text/html; charset=utf-8
13:24:15 FEHLER 404: Not Found.

Perfekt - danke!

25.12.2007 13:36

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]