我有一个简单的问题,但在任何地方都找不到答案
假设我有一个站点“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 服务器相关,而不是 PHP 本身。
PATH_INFO 是 Apache 在 AcceptPathInfo 指令打开时设置的环境变量。它将包含跟随实际文件名(或现有目录中不存在的文件)的尾随路径名信息,将被接受或拒绝。然后将环境变量传递给负责呈现页面的 Apache/CGI 模块。
可以使用 $_SERVER['PATH_INFO'] 在 PHP 中访问该变量。
例如,假设位置/test/指向的目录仅包含单个文件 here.html。然后请求/test/here.html/more 和/test/nothere.html/more 都收集/more 作为 PATH_INFO。
此答案复制自 Andrew Moore Link to original answer
关于php - 当我在 .php url 后面加上斜杠 (/) 时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21299243/