Wie kann ich mit PHP auf dieselbe Seite umleiten?
Zum Beispiel lautet meine Webadresse lokal:
http://localhost/myweb/index.php
Wie kann ich innerhalb meiner Website auf eine andere Seite umleiten?
header("Location: clients.php");
Ich weiß, dass dies möglicherweise falsch ist, aber muss ich das Ganze wirklich einsetzen? Was ist, wenn es später nicht http://localhost/
ist?
Gibt es eine Möglichkeit, so etwas zu tun? Außerdem habe ich eine Menge Code und am Ende, nachdem der Code verarbeitet wurde ... Ich versuche, ihn umzuleiten. Ist das in Ordnung?
Es gibt eine Reihe verschiedener Eigenschaften von $_SERVER
( docs ), die Informationen zur aktuellen Seite zurückgeben. Meine bevorzugte Methode ist jedoch die Verwendung von $_SERVER['HTTP_Host']
:
header("Location: " . "http://" . $_SERVER['HTTP_Host'] . $location);
dabei ist $location
der Pfad nach der Domäne, beginnend mit /
.
Meine bevorzugte Methode zum erneuten Laden derselben Seite ist $ _SERVER ['PHP_SELF']
header('Location: '.$_SERVER['PHP_SELF']);
die;
Vergiss nicht zu sterben oder nach deiner Kopfzeile zu verlassen ();
Bearbeiten: (Danke @RafaelBarros)
Wenn auch die Abfragezeichenfolge erforderlich ist, verwenden Sie
header('Location:'.$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']);
die;
Edit: (Danke @HugoDelsing)
Wenn die htaccess-URL-Manipulation ausgeführt wird, führt der Wert von $ _SERVER ['PHP_SELF'] möglicherweise zur falschen Stelle. In diesem Fall befinden sich die korrekten URL-Daten in $_SERVER['REQUEST_URI']
für Ihre Weiterleitung. Dies kann wie die Antwort von Nabil unten aussehen:
header("Location: http://$_SERVER[HTTP_Host]$_SERVER[REQUEST_URI]");
exit;
Sie können auch $ _SERVER [REQUEST_URI] verwenden, um $_SERVER['PHP_SELF']
gegebenenfalls den korrekten Wert zuzuweisen. Dies kann hilfreich sein, wenn Sie eine Umleitungsfunktion stark verwenden und diese nicht ändern möchten. Stellen Sie einfach den richtigen Wert in Ihrem Request-Handler wie folgt ein:
$_SERVER['PHP_SELF'] = 'https://sample.com/controller/etc';
Ein weiterer eleganter ist
header("Location: http://$_SERVER[HTTP_Host]$_SERVER[REQUEST_URI]");
exit;
Um wirklich universell zu sein, verwende ich Folgendes:
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'
|| $_SERVER['SERVER_PORT'] == 443) ? 'https://' : 'http://';
header('Location: '.$protocol.$_SERVER['HTTP_Host'].$_SERVER['REQUEST_URI']);
exit;
Ich mag $_SERVER['REQUEST_URI']
, weil es mod_rewrite und/oder alle GET-Variablen beachtet.
https-Erkennung von https://stackoverflow.com/a/2886224/947370
header('Location: '.$_SERVER['PHP_SELF']);
wird auch funktionieren
Ein schneller, einfacher Ansatz, wenn Sie sich nicht um Abfrageparameter kümmern:
header("location: ./");
Ich habe gerade versucht, header("Location: ");
(ohne irgendeinen Wert) zu verwenden und es wurde auf die aktuelle Seite umgeleitet.
Die einfache Zeile unten funktioniert gut:
header("Location: ?");