Jossi: richtig status 404 senden

Es geht darum den richtigen header für google und co anzuzeigen. Es wird bei meiner Homepage eine Seite aufgerufen die es nicht gibt.

if($page=='okf') { ... }

else

{

header("Status: 404 Not Found");

include 'error.php';

}

Wäre das soweit ok, oder bin ich da auf dem Holzweg

Danke schon mal für das ansehen ;_) Jossi

  1. Hallo Jossi,

    Wäre das soweit ok, oder bin ich da auf dem Holzweg

    Aus dem Manual:

    Es gibt zwei Spezialfälle von Header-Aufrufen. Der erste ist ein Header, der mit "HTTP/" beginnt (ob Groß- oder Kleinschreibung ist nicht relevant) und zum Herausfinden des zu sendenden HTTP Statuscodes verwendet wird. Wenn Sie zum Beispiel Apache konfiguriert haben, um ein PHP Skript zum Bearbeiten von Anforderungen fehlender Dateien (mittels der ErrorDocument-Direktive) zu verwenden, möchten Sie bestimmt sicherstellen, dass Ihr Skript den passenden Statuscode generiert.

    <?php
    header("HTTP/1.0 404 Not Found");
    ?>
    

    Du willst also header("HTTP/1.0 404 Not Found") oder etwas ganz ähnliches schicken.

    LG,
    CK

    1. Hallo Christian!

      Du willst also header("HTTP/1.0 404 Not Found") oder etwas ganz ähnliches schicken.

      Ja, wenn es die angewählte Seite nicht gibt, soll meine eigene Fehlermeldung angezeigt werden aber gleichzeitig für die Suchmaschinen auf eine Fehlermeldung. So wie ich das verstanden habe wäre das der Fehler 404.

      So dacht ich wenn ich erst den header sende und dann meine Seite aufrufe, müsste es richtig sein.

      Doch leider weiß ich nicht wie ich überprüfen kann ob eben diese header gesendet wurde.

      Laut deinem Beispielhabe ich ihn schon falsch geschrieben. Also so..

      {
      
      header("HTTP/1.0 404 Not Found");
      
      include 'error.php';
      
      }
      
      1. Hallo Jossi,

        So dacht ich wenn ich erst den header sende und dann meine Seite aufrufe, müsste es richtig sein.

        Du sendest den Header und sendest gleichzeitig (bzw. im gleichen Request) die Fehlerseite mit, damit sowohl Nutzer als auch ein Bot wie der von Google wissen, was Sache ist.

        Doch leider weiß ich nicht wie ich überprüfen kann ob eben diese header gesendet wurde.

        Doch, du kannst die Entwicklertools deines Browsers benutzen (anhand des Beispiels Firefox). Alternativ kannst cURL benutzen. Hier ein Beispiel:

        julius@julius-NOTEBOOK:~$ curl -I https://selfhtml.org/seite-gibts-nicht
        HTTP/1.1 404 Not Found
        Date: Mon, 07 Mar 2016 11:44:36 GMT
        Server: Apache
        Last-Modified: Sat, 06 Feb 2016 19:31:35 GMT
        ETag: "a114b-f55-52b1f04140850"
        Accept-Ranges: bytes
        Content-Length: 3925
        Content-Type: text/html; charset=UTF-8
        

        Gruß
        Julius

        1. Hallo Julius,

          danke für den Tip mit den Entwicklertools desBrowsers anhand des Beispiels Firefox).

    2. Mahlzeit,

      <?php
      header("HTTP/1.0 404 Not Found");
      ?>
      

      Du willst also header("HTTP/1.0 404 Not Found") oder etwas ganz ähnliches schicken.

      dann lieber etwas ganz ähnliches.
      Pferde, Apotheke, ...

      So long,
       Martin

      1. Hallo Martin,

        Du willst also header("HTTP/1.0 404 Not Found") oder etwas ganz ähnliches schicken.

        dann lieber etwas ganz ähnliches.

        Exakt deshalb habe ich den Halbsatz angefügt.

        LG,
        CK

        1. Moin!

          dann lieber etwas ganz ähnliches.

          Exakt deshalb habe ich den Halbsatz angefügt.:

          Einfacher: http_response_code(404);

          Um die Angabe des Protokolls und den ergänzenden Standardtext (Hier: "NOT FOUND") kümmert sich PHP dann ganz von allein.

          Jörg Reinholz