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.