Wie kann man eine Webseite mit PHP weiterleiten

1. Verwenden Sie die Funktion header() mit exit()

In PHP können Sie die Funktion header() (es sendet einen rohen HTTP-Header an einen Client) verwenden, um von einer Webseite auf eine andere weiterzuleiten.

Es ist möglich, mit der Funktion header() einen neuen HTTP-Header zu senden, aber dieser muss vor jedem HTML oder Text an den Browser gesendet werden (z. B. vor ).

Beispiel 1

<?php 
  header('Location: http://www.w3docs.com');
// or die();
  exit();
?>

Die Verwendung von exit () bei einem Redirect soll verhindern, dass die Seite den restlichen Inhalt (d. h. restriktierte Seiten).

2. Die Verwendung der Header-Funktion ob_start() mit ob_end_flush()

Beispiel 1

<?php

 ob_start(); //das muss die erste Zeile der Kopfzeile sein('Location: target-page.php'); 

ob_end_flush(); //das muss die letzte Zeile der Seite sein

3. Using true or false parameters

PHPs "Location"-header unterstützt immer noch den HTTP 302-Redirect-Code, aber man muss entweder 301 (permanent redirect) oder 303 (other) verwenden. (Erfahren Sie mehr über HTTP-Statusmeldungen).

Beispiel 1

<?php
  header('Location: http://www.w3docs.com/', true, 301);
  exit();
?>

Der optionale Parameter true ersetzt einen zuvor gesetzten Header und die 301 am Ende ändert den Antwortcode auf den rechten.

Beispiel 2

<?
    header('Status: 301 Moved Permanently', false, 301);
    header('Location: new/path.php');
?>
Hinweis: Dieser Parameter der Header-Funktion gibt an, ob der Header den vorherigen Header ersetzen oder einen zweiten Header hinzufügen soll.

4. Die Funktion Helper

Beispiel

function Redirect($url, $permanent = false) {
 header('Location: ' . $url, true, $permanent ? 301 : 302);
 exit();
 }
Redirect('http://www.w3docs.com/', false);
Hinweis: Diese Funktion unterstützt den Statuscode 303 nicht.

Dieses Beispiel ist flexibler:

<?php

function redirect($url, $statusCode = 303)
{
  header('Location: ' . $url, true, $statusCode);
  die();
}

5. Es gibt spezielle Fälle, wenn Sie in CLI laufen (Redirects können nicht passieren und sollten daher nicht exit()) oder wenn Ihr Webserver PHP als (F) CGI läuft (er benötigt einen zuvor gesetzten Status-Header, um richtig weiterzuleiten).

Beispiel

<?php

function Redirect($url, $code = 302)
{
  if (strncmp('cli', PHP_SAPI, 3) !== 0) {
    if (headers_sent() !== true) {
      if (strlen(session_id()) > 0) {
        // if using sessions
        session_regenerate_id(true); // avoids session fixation 	attacks
        session_write_close(); // avoids having sessions lock other requests
      }

      if (strncmp('cgi', PHP_SAPI, 3) === 0) {
        header(sprintf('Status: %03u', $code), true, $code);
      }

      header('Location: ' . $url, true, preg_match('~^30[1237]$~', $code) > 0 ? $code : 302);
    }
    exit();
  }
}

Erfahren Sie mehr über die Weiterleitung von Webseiten mit HTML, JavaScript, Apache und Node.js.