当我在.php url之后加一个斜线(/)会发生什么?

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

说我有一个网站“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”

谢谢。


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

PATH_INFO

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

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

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

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

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


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

链接地址: http://www.djcxy.com/p/77035.html

上一篇: What happens when i put a slash (/) after a .php url?

下一篇: GLSL Issue when using pow()