Wie setze ich HTTP Status Codes in PHP?

Durch den richtigen HTTP Status Code teilst du Google beispielsweise mit, dass eine Seite vorübergehend oder dauerhaft umgezogen ist. Hier gehen wir darauf ein, wie du HTTP Status Codes in PHP setzt. 

Wenn ein Client wie ein Browser eine URL aufruft, sendet der Server eine Antwort mit einem HTTP Status Code. Durch diesen Code teilt er mit, ob die Anfrage erfolgreich beantwortet wurde, es zu einem Fehler kam oder beispielsweise der Request umgeleitet wird.

Da fast alle Webseiten PHP nutzen, ist es hilfreich zu wissen, wie du in PHP einen Status Code setzt. So bist du in der Lage, Weiterleitungen korrekt einzurichten. 

HTTP Status Codes für Weiterleitungen nutzen

In PHP Status Codes zu setzen, ist vor allem hilfreich, wenn du eine Seite vorübergehend oder dauerhaft an eine neue URL umziehst und eine Weiterleitung erstellen willst. 

Dafür eignen sich die folgenden 3 Status Codes: 

  • 301: Das gewünschte Dokument ist dauerhaft unter einer anderen Adresse zu finden. 
  • 302: Es ist vorübergehend unter einer anderen Adresse zu finden, zum Beispiel bei Updates oder zeitlich begrenzten Aktionen.
  • 307: Dieser Status Code ist Nachfolger von 302, mit dem Unterschied, dass der Client die HTTP-Anforderungsmethode nicht ändern darf. 

In PHP einen Status Code setzen

Um in PHP einen Status Code zu setzen und eine Weiterleitung einzurichten, verwendest du die Header-Funktion: 

header ( $string [, $bool [, $int_code] ] )

Dahinter steckt Folgendes: 

  • $string: An dieser Stelle fügst du die Anweisung ein, bei einer Weiterleitung die Adresse durch „Location: http://…..tld“.
  • $bool (optional): Hier hast du die Wahl zwischen:
  • TRUE, wenn vorherige Header vom gleichen Typ, also mit einem Statuscode überschrieben werden sollen, oder
  • FALSE, wenn der Header hinzugefügt werden soll. 

In aller Regel wirst du dich an dieser Stelle für ein TRUE entscheiden.

  • $int_code (optional): Schließlich folgt bei einer Weiterleitung über PHP der Status Code. Gibst du nur eine Location-Anweisung, aber keinen Code an, wird automatisch der Status Code 302 mitgesendet.

Am besten fügst du ein exit; an, um die Ausführung des Scripts zu beenden.

Das Ergebnis sieht beispielsweise so aus:

header(\"Location: http://beispieladresse.de/\", TRUE, 307)
;exit;

Natürlich kannst du auch in PHP den Status Code 404 setzen. Dadurch teilst du dem Crawler mit, dass es eine Seite nicht mehr gibt. 

In dem Fall sieht der Code so aus:

header("HTTP/1.1 404 Not Found");

Wenn PHP als FastCGI statt als Apache-Modul ausgeführt wird, ersetze „HTTP/1.1“ „Status:“:

header("Status: 404 Not Found");
Steve Paine
01.12.2022