Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我在.php url后加上斜杠(/)时会发生什么?_Php_Url_Http Status Code 404_Slash - Fatal编程技术网

当我在.php url后加上斜杠(/)时会发生什么?

当我在.php url后加上斜杠(/)时会发生什么?,php,url,http-status-code-404,slash,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”)。 事实显然并非如此

我有一个简单的问题,但到处都找不到答案

假设我有一个网站“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”时,也是如此


谢谢。

这是由于名为PATH\u INFO的Apache环境变量造成的

路径信息

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

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

在PHP中,可以使用$\u SERVER['PATH\u INFO']访问该变量

例如,假设位置/test/指向一个只包含一个文件here.html的目录。然后请求/test/here.html/more和/test/nothere.html/more都收集/more作为路径信息

这个答案是从安德鲁·摩尔那里抄来的

当服务器注意到URL中的“目录”是脚本而不是实际目录时,它会运行脚本。URL中路径的其余部分放在PHP变量
$\u SERVER['path\u INFO']

中,它只被视为path\u INFO。然而,虚拟路径片段断开了相对资源链接(css、图像)。感谢您的回复。我还是不太明白。允许这样一个url首先有效有什么意义?为什么不直接返回404错误?这真的是Apache独有的吗?NGINX不会做同样的事情吗?如果您从其他答案复制,则需要署名。请参阅。至少要提到作者,不要将其隐藏在逐字复制下面的非描述性链接中。