如何使用PHP重定向到同一页面?
例如,我的本地网址是:
http://localhost/myweb/index.php
如何在我的网站内重定向到另一个页面,例如:
header("Location: clients.php");
我知道这可能是错的,但是我真的需要把整件事情搞定吗?如果以后不是http://localhost/
会怎么样?
有没有办法做这样的事情?此外,我有很多代码,然后在完成处理一些代码后...我试图重定向使用它。那可以吗?
答案 0 :(得分:74)
我重新加载同一页面的首选方法是$ _SERVER ['PHP_SELF']
header('Location: '.$_SERVER['PHP_SELF']);
die;
不要忘记在标题()之后死亡或退出;
编辑:(谢谢@RafaelBarros)
如果还需要查询字符串,请使用
header('Location:'.$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']);
die;
编辑:(感谢@HugoDelsing)
当htaccess url操作正在播放时,$ _SERVER ['PHP_SELF']的值可能会将您带到错误的位置。在这种情况下,正确的网址数据将在$_SERVER['REQUEST_URI']
中用于您的重定向,这看起来像Nabil的答案如下:
header("Location: http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]");
exit;
如果需要,您还可以使用$ _SERVER [REQUEST_URI]将正确的值分配给$_SERVER['PHP_SELF']
。如果您大量使用重定向功能并且您不想更改它,这可能会有所帮助。只需在请求处理程序中设置正确的值,如下所示:
$_SERVER['PHP_SELF'] = 'https://sample.com/controller/etc';
答案 1 :(得分:19)
另一个优雅的是
header("Location: http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]");
exit;
答案 2 :(得分:11)
有许多不同的$_SERVER
(docs)属性可以返回有关当前页面的信息,但我首选的方法是使用$_SERVER['HTTP_HOST']
:
header("Location: " . "http://" . $_SERVER['HTTP_HOST'] . $location);
其中$location
是域之后的路径,以/
开头。
答案 3 :(得分:8)
要真正普及,我正在使用它:
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'
|| $_SERVER['SERVER_PORT'] == 443) ? 'https://' : 'http://';
header('Location: '.$protocol.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
exit;
我喜欢$_SERVER['REQUEST_URI']
因为它尊重mod_rewrite和/或任何GET变量。
https检测
答案 4 :(得分:1)
header('Location: '.$_SERVER['PHP_SELF']);
也可以使用
答案 5 :(得分:0)
一种快速简便的方法,如果您不关心查询参数:
header("location: ./");
答案 6 :(得分:0)
我刚刚尝试使用header("Location: ");
(无任何值),并将其重定向到当前页面。
答案 7 :(得分:0)
下面的简单行就可以了:
header("Location: ?");
答案 8 :(得分:-2)
我在localhost中正确使用:
header('0');