【问题标题】:PHP Header Location: ../location vs $_SERVER[DOCUMENT_ROOT]/locationPHP 标头位置:../location 与 $_SERVER[DOCUMENT_ROOT]/location
【发布时间】:2016-12-29 12:26:38
【问题描述】:

所以,我做了一个简单的 PHP 登录,但是当我尝试像这样重定向时:

$path = $_SERVER["DOCUMENT_ROOT"];  
header("Location: $path/admin/index.php");

它似乎什么也没做,但是在我刷新页面后我登录了。
在我将代码更改为此之后:

header("Location: ../admin/index.php");

它有效。

有人可以向我解释一下吗?

附言。对不起我的英语不好

【问题讨论】:

  • 回显$path/admin/index.php并查看值
  • 有了@sidyll 的评论,现在才有意义。谢谢。

标签: php redirect header location


【解决方案1】:

标头被发送到浏览器,因此它不是内部服务器操作。由于它不是内部重定向,因此您无需处理内部路径。当您使用DOCUMENT_ROOT 时,您将获得文件所在目录的内部服务器路径。

如果您想将站点的根目录作为 URL 引用,只需使用 /

header("Location: /admin/index.php");
header("Location: /"); # go to homepage, for example

您的.. 起作用了,因为您可能位于子目录中,而.. 被转换为admin 所在的父目录。

【讨论】:

    【解决方案2】:
    $_SERVER["DOCUMENT_ROOT"]; 
    

    返回路径如/var/www/html/yourfolder/,但您必须重定向到website.com/yourfolder/localhost/yourfolder/

    因此这行不通。

    【讨论】:

      【解决方案3】:

      您是否尝试过打印 $path 的值?

      $path 的值是相对于实际文件位置的

      例如$path = '/c/inetpub/sites/example/main/'

      您可能想要'/c/inetpub/sites/example/''/c/inetpub/sites/example/main/..' 之类的东西

      【讨论】:

      • "$path 的值是相对于实际文件位置的" 不,$path 是他固定的文档根目录。与任何事物无关。
      猜你喜欢
      • 2013-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多