如何在PHP中重定向到同一页面

时间:2011-11-15 03:05:43

标签: php redirect

如何使用PHP重定向到同一页面?

例如,我的本地网址是:

http://localhost/myweb/index.php

如何在我的网站内重定向到另一个页面,例如:

header("Location: clients.php");

我知道这可能是错的,但是我真的需要把整件事情搞定吗?如果以后不是http://localhost/会怎么样?

有没有办法做这样的事情?此外,我有很多代码,然后在完成处理一些代码后...我试图重定向使用它。那可以吗?

9 个答案:

答案 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)

有许多不同的$_SERVERdocs)属性可以返回有关当前页面的信息,但我首选的方法是使用$_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://stackoverflow.com/a/2886224/947370

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');