PHP Weiterleitung erstellen und HTTP Fehlercodes/Statuscodes senden

PHP FAQ

PHP FAQ

Für Weiterleitungen werden am häufigsten die HTACCESS, PHP und HTML verwendet. Fast alle Webseiten setzen PHP Code ein und da empfiehlt es sich, Weiterleitungen mit PHP zu nutzen.

In diesem PHP Tutorial stelle ich die PHP Weiterleitung mittels Header-Angabe vor. Ebenfalls können HTTP Fehlercodes gesendet werden.

Querverweis: Dieser Artikel ist Teil unserer Serie: Häufig gestellte Fragen zu PHP

HTTP Fehlercode - Status Codes

Beschäftigen wir uns vor der eigentlichen Weiterleitung mit Statuscodes. Diese können dem Browser übermittelt werden und Suchmaschinen arbeiten ebenfalls damit. Da es von Statuscode 100 bis 510 insgesamt 5 Kategorien von Statuscodes gibt, werden wir hier nur die wichtigsten behandeln.
  • Statuscode 102 (Processing)
    Für Zeitintensive Ausführungen wird Code 102 verwendet, damit der Browser kein Timeout erzeugt.
  • Statuscode 301 (Moved Permanently)
    Angefordertes Dokument steht ab sofort nur noch unter einer anderern Adresse zur Verfügung (Location-Angabe)
  • Statuscode 302 (Found) und 307 (Temporary Redirect)
    Dokument wurde gefunden, steht aber (vorrübergehend) unter einer anderen Adresse zur Verfügung (Verwendung durch GET).
  • Statuscode 403 (Forbidden)
    Mangelhafte Berechtigung des Benutzers. Beispiel: statt HTTPS wurde HTTP verwendet.
  • Statuscode 404 (Not Found)
    Das angegebene Dokument wurde nicht gefunden. (toter Link)
  • Statuscode 408 (Request Timeout)
    Zeitüberschreitung bei der Verbindung. (PHP: unter php.ini einstellbar) Für lange Scriptlaufzeiten kann 102 verwendet werden.
  • Statuscode 410 (Gone)
    Dokument steht nicht länger zur Verfügung. (Falls andere Adresse: 301 verwenden)
  • Statuscode 500 (Internal Server Error)
    Sammelstatuscode für unerwartete Serverfehler. Kann auch bei fehlerhafter HTACCESS entstehen.
  • Statuscode 503 (Service Unavailable)
    Dokument/Service steht gerade nicht zur Verfügung. Tritt auf, wenn Server überlastet oder bei Wartungsarbeiten. Retry-After Angabe weißt dem Benutzer hin, ab wann der Service wieder verfügbar ist.
  • Statuscode 508 (Loop Detected)
    Tritt unter PHP häufig auf, wenn eine Endlosschleife ausgeführt wurde.
Mit einigen der gezeigten Fehlercodes kannst du wunderbar arbeiten. Andere weisen dich aber auch auf Programmierfehler oder Laufzeitintensive Scripts hin.

Umleitungen/Weiterleitungen mit PHP und Header Statuscode

Die header() Funktion bietet die Beispielsweise die Möglichkeit URLs umzuleiten und einen Statuscode zu übermitteln. Aber auch um dem Browser den Dateityp mitzuteilen (entweder oder).
Weitere Beispiele für die mächtige header() Funktion dann weiter unten.

Die header-Funktion:
header ( $string [, $bool [, $int_code] ] )

Erläuterung der Funktion:
  • Rückgabe:
    Keine Rückgabe möglich.
  • $string
    Anweisung, bspw. "Location: http://.....tld" für Umleitung
  • $bool (optional)
    TRUE oder FALSE, ob vorherige header() gleichen Types (Statuscode) überschrieben (TRUE) oder als weiterer hinzugefügt (FALSE) werden soll. Standart ist TRUE (ersetzen).
  • $int_code (optional), abhängig von $string und $bool
    Statuscode, der bei z.B. einer Weiterleitung genutzt werden soll. Wird nur mitgesendet, wenn $string nicht leer ist.
Hinweise:

Wird die Location Anweisung genutzt, wird automatisch Statuscode 302 (Found) mitgesendet, insofern kein anderer Statuscode zuvor gesendet wurde.

Ebenfalls kann die header() Funktion mehrfach benutzt werden. Bei einer Weiterleitung macht ein exit; nach der Funktion sinn, um restliche Scriptausführung abzubrechen.

Beispiele einer Weiterleitung:
header(\"Location: http://webmaster-glossar.de/\");exit;

header(\"Location: http://webmaster-glossar.de/\", TRUE, 301);exit;

Weiterleitung nach 5 Sekunden:
header( \"refresh:5;url=http://webmaster-glossar.de/\" );echo \'Du wirst in 5 Sekunden automatisch weitergeleitet. Oder klick <a title=\"Ziel: http://webmaster-glossar.de/\" href=\"http://webmaster-glossar.de/\">hier</a> !\';

Fazit

Einfache Weiterleitungen, auch mit Statuscode, können mit der header() Funktion einfach gelöst werden.
Zwar gibt es noch mehr Anwendungen für die header() Funktion, jedoch möchten wir beim Thema Weiterleitung bleiben.

Falls du Fragen dazu hast, stelle diese am besten in den Kommentaren.