Charsten: Fehlerseiten weiterleiten, header 404 übergeben aber dann 302 ?

ich habe ein Problem, wenn bei mir eine Seite aufgerufen wird die es nicht gibt wird diese weitergeleitet.

Also die Seite 44444.html wird aufgerufen, in der Datenbank wird nachgesehen ob diese Seite vorhanden ist, wenn nicht wird sie

über:

header("HTTP/1.0 404 Not Found");  
header("Location:00000.html");  

weitergeleitet.

Doch im Header dann ist sie dann nicht mehr 404 sondern HTTP/1.1 302.

Wie kann ich diese verwandlung verhindern?

Charsten

  1. Hi,

    Also die Seite 44444.html wird aufgerufen, in der Datenbank wird nachgesehen ob diese Seite vorhanden ist, wenn nicht wird sie

    über:

    header("HTTP/1.0 404 Not Found");
    header("Location:00000.html");

    weitergeleitet.

    Doch im Header dann ist sie dann nicht mehr 404 sondern HTTP/1.1 302.

    Wie kann ich diese verwandlung verhindern?

    Indem du nicht weiterleitest.

    MfG ChrisB

    --
    Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
  2. header("HTTP/1.0 404 Not Found");
    header("Location:00000.html");

    Doch im Header dann ist sie dann nicht mehr 404 sondern HTTP/1.1 302.

    Wie kann ich diese verwandlung verhindern?

    Location ist ein Attribut für eine Weiterleitung; wenn du Location angibst, leitest du auch weiter, entsprechend muss der Status 302 lauten, nicht 404. PHP ist (wie üblich) so nachsichtig, dir unter die Arme zu greifen, da du die Funktion von Location nicht selbst nachlesen wolltest.

    Willst du informativen Text mit dem 404 ausgeben, füge ihn direkt in die Ausgabe ein, anstatt irgendwohin weiterzuleiten.

    1. Hallo,

      Location ist ein Attribut für eine Weiterleitung; wenn du Location angibst, leitest du auch weiter, entsprechend muss der Status 302 lauten

      oder 301.

      Willst du informativen Text mit dem 404 ausgeben, füge ihn direkt in die Ausgabe ein, anstatt irgendwohin weiterzuleiten.

      ACK. Und welche URL ursprünglich angefordert und nicht gefunden wurde, kannst du dort in $_SERVER['REQUEST_URI'] nachlesen. Darauf aufbauend kann man dem menschlichen Besucher sogar Alternativen anbieten für das, was er eigentlich gesucht hat, während die HTTP-Engine des Browsers trotzdem die Info kriegt "Das war wohl nix".

      Ciao,
       Martin

      --
      Treffen sich zwei Freundinnen nach langer Zeit wieder. "Gut siehste aus. Hast du abgenommen?" - "Nö." - "Hmm, dann haste zugenommen. Steht dir aber gut."
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(