为啥 www.example.com/index.php/my/path/here 由 index.php 处理?

Posted

技术标签:

【中文标题】为啥 www.example.com/index.php/my/path/here 由 index.php 处理?【英文标题】:Why www.example.com/index.php/my/path/here is processed by index.php?为什么 www.example.com/index.php/my/path/here 由 index.php 处理? 【发布时间】:2010-12-26 02:02:49 【问题描述】:

我只是好奇,如何调用 apache 的功能来引导这样的请求

www.example.com/index.php/my/path/here

到文件 index.php?一开始你可能会想,如果这个请求导致 404 错误页面是正确的,因为在站点根目录中没有名为 index.php 的文件夹

顺便说一句,是否有可能关闭此 Apache 功能(如果它是一项功能),以便此类请求真正以 404 告终?

【问题讨论】:

【参考方案1】:

请参阅this link 了解说明。

这是一种将信息传递给(在这种情况下)index.php 脚本的方法不使用使用查询字符串,某些搜索引擎会忽略它,因此文章的名称“搜索引擎友好的 URL”。

我可以推荐文章中讨论的第三种方法,因为它可以避免中间带有 index.php 的奇怪 URL。

【讨论】:

谢谢,这是一篇非常有趣的文章。【参考方案2】:

这不是 URL 重写功能。或者至少它不需要。见AcceptPathInfo Directive:

该指令控制是否 包含尾随的请求 后面的路径名信息 实际文件名(或不存在的文件 在现有目录中)将是 接受或拒绝。尾随 可以制作路径名信息 可用于脚本中的 PATH_INFO 环境变量。

例如,假设位置 /test/ 指向一个目录 仅包含单个文件 here.html。然后请求 /test/here.html/more/test/nothere.html/more两者都收集 /morePATH_INFO

原来是CGI environment variable。

PATH_INFO

给定的额外路径信息 由客户。换句话说,脚本 可以通过他们的虚拟访问 路径名,后跟额外的 这条路径尽头的信息。 额外信息发送为 PATH_INFO。该信息应 由服务器解码,如果它来了 在将 URL 传递给 CGI 脚本。

【讨论】:

【参考方案3】:

在那里,您可以让 index.php 之类的文件从服务器检查 PATH_INFO 并处理整个内容树。虽然我无法将其关闭,但您可以简单地让 index.php 检查非空 $_SERVER['PATH_INFO'] 并通过 header() 函数以 404 代码响应。

【讨论】:

以上是关于为啥 www.example.com/index.php/my/path/here 由 index.php 处理?的主要内容,如果未能解决你的问题,请参考以下文章

阻止 WordPress 从 301 重定向 /index.php 到 /

htaccess 从 url 中删除 index.php

.htaccess 删除 index.php 并从 URL 中隐藏参数键

Ubuntu 下apache2开启rewrite隐藏index.php

更改默认网址 php

Docker、nginx、phpmyadmin 授权期间重定向错误