如何使用PHP重定向到同一页面?
例如,我的本地网址是:
http://localhost/myweb/index.php
Run Code Online (Sandbox Code Playgroud)
如何在我的网站内重定向到另一个页面,说:
header("Location: clients.php");
Run Code Online (Sandbox Code Playgroud)
我知道这可能是错的,但我真的需要把整个事情搞定吗?如果不是以后怎么http://localhost/
办?
有没有办法做这样的事情?此外,我有很多代码,然后在完成处理一些代码后...我试图重定向使用它.这可以吗?
Syn*_*ror 77
我重新加载同一页面的首选方法是$ _SERVER ['PHP_SELF']
header('Location: '.$_SERVER['PHP_SELF']);
die;
Run Code Online (Sandbox Code Playgroud)
不要忘记在标题后退出或退出();
编辑:(谢谢@RafaelBarros)
如果查询字符串也是必需的,请使用
header('Location:'.$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']);
die;
Run Code Online (Sandbox Code Playgroud)
编辑:(感谢@HugoDelsing)
当htaccess url操作正在播放时,$ _SERVER ['PHP_SELF']的值可能会将您带到错误的位置.在这种情况下,正确的网址数据将$_SERVER['REQUEST_URI']
用于您的重定向,这看起来像Nabil的答案如下:
header("Location: http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]");
exit;
Run Code Online (Sandbox Code Playgroud)
如果需要,您还可以使用$ _SERVER [REQUEST_URI]为其分配正确的值$_SERVER['PHP_SELF']
.如果您大量使用重定向功能并且您不想更改它,这可能会有所帮助.只需在请求处理程序中设置正确的值,如下所示:
$_SERVER['PHP_SELF'] = 'https://sample.com/controller/etc';
Run Code Online (Sandbox Code Playgroud)
Nab*_*imi 19
另一个优雅的是
header("Location: http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]");
exit;
Run Code Online (Sandbox Code Playgroud)
Nic*_*ole 12
有许多不同的$_SERVER
(docs)属性可以返回有关当前页面的信息,但我首选的方法是使用$_SERVER['HTTP_HOST']
:
header("Location: " . "http://" . $_SERVER['HTTP_HOST'] . $location);
Run Code Online (Sandbox Code Playgroud)
$location
域之后的路径在哪里,以/
.开头.
为了真正普及,我正在使用这个:
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'
|| $_SERVER['SERVER_PORT'] == 443) ? 'https://' : 'http://';
header('Location: '.$protocol.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
exit;
Run Code Online (Sandbox Code Playgroud)
我喜欢$_SERVER['REQUEST_URI']
因为它尊重mod_rewrite和/或任何GET变量.
从/sf/answers/202035711/进行 https检测
归档时间: |
|
查看次数: |
126471 次 |
最近记录: |