当我在.php网址后面添加斜杠(/)时会发生什么?

时间:2014-01-23 04:15:58

标签: php url http-status-code-404 slash

我有一个简单的问题,但无法在任何地方找到答案

说我有一个网站" mysite.com"。 我可以通过键入" mysite.com"来访问索引页面。或" mysite.com/index.php"。 这工作正常......但是,当我试图去" mysite.com/index.php /"页面加载,但不正确。 究竟发生了什么?我认为它应该返回404错误,因为index.php将被视为(非现有的)目录(即我认为它会尝试找到" mysite.com/index.php/index.php&# 34)。 事实并非如此。有人可以告诉我究竟发生了什么吗? 当您在斜杠之后放置任何内容时也是如此,即" mysite.com/index.php/hello"

感谢。

2 个答案:

答案 0 :(得分:4)

这是由于你的Apache环境变量叫做PATH_INFO。

<强> PATH_INFO

实际上,PATH_INFO与服务PHP页面的Apache Web服务器有关,而不是每个人说的PHP。

PATH_INFO是Apache在启用AcceptPathInfo指令时设置的环境变量。它将包含跟随实际文件名(或现有目录中不存在的文件)的尾随路径名信息将被接受或拒绝。然后将环境变量传递给负责呈现页面的Apache / CGI模块。

可以使用$ _SERVER ['PATH_INFO']在PHP中访问该变量。

例如,假设位置/ test /指向仅包含单个文件here.html的目录。然后请求/test/here.html/more和/test/nothere.html/more收集/更多作为PATH_INFO。

这个答案是从Andrew Moore复制的 Link to original answer

答案 1 :(得分:1)

当服务器注意到URL中的“目录”是脚本而不是实际目录时,它会运行脚本。 URL中路径的其余组件放在PHP变量$_SERVER['PATH_INFO']中。