【发布时间】:2015-06-29 01:47:54
【问题描述】:
最近我注意到在我的一些 php 网页上,可以在 URL 的末尾添加一个 slash (/) 并写一些文本,这会以某种方式修改页面,例如假设地址(只是地址示例,网上没有)
http://mypage.com/index.php
我输入了类似的东西
http://mypage.com/index.php/arbitrary_text
这会导致页面加载正确的源代码,但无法加载放置在同一服务器上的脚本、样式和图像(源在服务器之外的图像正确加载)。我已经看到这种地址类型的使用,例如在 CodeIgniter 中,它使用斜杠后面的参数加载网页。但是,我没有使用这种项目,也没有使用 htaccess 文件(也没有 php 代码),它会使用和处理这种类型的地址,所以对我来说神秘的是为什么斜杠后面的参数(在 php 页面中)在没有样式、图像和脚本的情况下加载,并且在某个地方发生错误?为什么会发生这种情况?(我在 Chrome 和 Firefox 中进行了测试,最新版本,Chrome 显示损坏的图像占位符,Firefox 不显示任何图像)我以前从未见过这种行为.有人可以解释一下(或通过链接等导航我)吗?!
为了更好的想象:这是一个地址类型为 mypage.com/gallery.php
的网页这个地址类型为mypage.com/gallery.php/xyz(只是地址示例,网上没有)
【问题讨论】:
-
它是
PATH_INFO。在 http 规范中查找 -
图像/脚本/等不会加载,因为您正在为外部文件使用相对 url。浏览器会认为
index.php是一个文件夹,因此它会从服务器请求文件为/index.php/images/test.png。在您的 php 页面顶部放置一些东西来检测它并在没有路径信息的情况下重定向到同一页面并不难。或者只是在你的 apache 配置中关闭 path_info。 -
非常感谢。我不知道在哪里搜索。