地址栏不变 - PHP

Posted

技术标签:

【中文标题】地址栏不变 - PHP【英文标题】:Address Bar not changing - PHP 【发布时间】:2015-09-12 06:03:34 【问题描述】:

我正在使用 header('Location:') 将用户重定向到另一个网页。但是,不是覆盖地址栏上的前一个地址,而是将新地址附加到已经存在的地址上。例如:

地址栏目前持有:

localhost/v2/admin

还有header('Location:'.DIRADMIN.'login.php'); 其中 DIRADMIN 是一个常量,定义为

define(DIRADMIN,'localhost/v2/admin/');

然后,重定向后,新的地址栏将是

localhost/v2/admin/localhost/v2/admin/login.php

我以为是服务器的原因,我正在使用。我使用的是统一服务器零。但后来我安装了 WAMP,问题仍然存在。

我仍然是菜鸟,我不知道是什么原因造成的,如果问题是由于 mod_rewrite,那么在两台服务器上,模块都处于活动状态。我已经检查了一些问题,例如 redirect-PHP header(Location:..)

等等。我什至对此进行了谷歌搜索,但没有结束。 我该如何解决这个问题?

header_remove();

无法使用,因为第一个地址是手动输入的,不是由header(); 设置的

【问题讨论】:

试试header('Location:'.$_SERVER['DOCUMENT_ROOT'].'/login.php'); 请考虑将Location 标头设置为状态码(301 -> 永久,302 临时) 【参考方案1】:

如果没有 http 前缀,浏览器会尝试查找相对于当前路径的路径

像这样添加“http://”

header('Location: '.DIRADMIN.'login.php');

如果您希望 URL 相对于您的域根路径,您只需添加 '/'

header('Location: /'.DIRADMIN.'login.php');

您应该始终尝试使用相对路径 - 这样,如果您更改域,您的代码仍然有效。

【讨论】:

它仅适用于一个重定向。另一个仍然有同样的问题。 @rathorsunpreet 请解释一下其他重定向是什么意思 @rathorsunpreet 您使用的是两个示例中的哪一个? 另一个重定向是 header('Location:'.DIRADMIN.'?logout');它仍然无法使用您的解决方法。然后我尝试了 PHP Worm... 写的内容,所有重定向都有效。【参考方案2】:

定义

define('DIRADMIN','localhost/v2/admin/);

作为

define('DIRADMIN','http://localhost/v2/admin/');

【讨论】:

首先,它应该是define("DIRADMIN"... 而不是define(DIRADMIN...。不建议使用后一种使用假定字符串的方法,PHP 将发布有关它的通知(取决于所选的错误报告级别)。 其次,这很难将您的代码连接到http 协议。如果您将来更改为https,则需要更新所有这些实例。要么获取当前协议,要么使用协议相关的 URL,例如define("DIRADMIN", '//localhost/v2/admin/');

以上是关于地址栏不变 - PHP的主要内容,如果未能解决你的问题,请参考以下文章

java重定向时如何保持地址栏不变

php隐藏地址栏有方法么?

求助高手,Nginx配置二级域名跳转 地址栏不变咋处理?

java 如何实现页面之间跳转浏览器地址栏URL不变

php 获取地址栏参数

如何使用 PHP 或 JavaScript/jQuery 禁用地址栏?