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

标签 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/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/

相关文章:

php - 使用 SWIG 在 PHP 中迭代 std::map

php - Laravel 访问器、关系和预加载

php - 保持页面连接的最佳方式?

python - 在 Django 中将多个值从 url 转换为 json

javascript - 组合书签以在两个 URL 之间创建切换

css - IE加载字体时出现404错误

Java EE - HTTP 错误 404 - 资源不可用 - 在页面上点击 "Submit"按钮后

php - PayPal SetExpressCheckout 错误

Django NoReverseMatch

javascript - 从附加脚本标记中检测 404 错误