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

Guy*_*Guy 8 php url slash http-status-code-404

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

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

谢谢.

Lal*_*S L 4

这是由于您的 Apache 环境变量 PATH_INFO 所致。

路径信息

实际上,PATH_INFO 与提供 PHP 页面的 Apache Web 服务器有关,而不是与 PHP 相关。

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

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

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

这个答案是从安德鲁·摩尔 链接复制到原始答案的

  • 如果复制其他答案,则需要注明出处。 (3认同)
  • 请参阅[引用建议](http://meta.stackexchange.com/questions/115816/how-should-i-attribute-excerpts-of-code-from-other-stack-overflow-posts/115820#115820)。至少提及作者,并且不要将其隐藏在逐字副本下方的非描述性链接中。 (3认同)