为啥 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
两者都收集/more
为PATH_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 删除 index.php 并从 URL 中隐藏参数键