代码之家  ›  专栏  ›  技术社区  ›  Vladislav Rastrusny

为什么index.php会处理www.example.com/index.php/my/path/here?

  •  3
  • Vladislav Rastrusny  · 技术社区  · 15 年前

    我只是好奇,如何调用Apache的特性来指导这样的请求

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

    文件index.php?您可能会认为,在第一个时刻,如果这个请求导致404错误页是正确的,因为没有 文件夹 在站点根目录下调用index.php。

    顺便问一句,是否有可能关闭这个Apache功能(如果它是一个功能),从而使这些请求最终以404结束?

    3 回复  |  直到 15 年前
        1
  •  10
  •   cletus    15 年前

    这不是URL重写功能。或者至少没有 需要 成为。见 AcceptPathInfo Directive :

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

    例如,假设位置 /测试/指向一个目录 仅包含单个文件 here.html . 然后请求 /test/here.html/more /test/nothere.html/more 都收集 /more 作为 路径信息 .

    原来是一个 CGI environment variable .

    • 路径信息

    提供的额外路径信息 由客户。换句话说,脚本 可以通过其虚拟 路径名,后面是多余的 此路径末尾的信息。 额外信息作为 路径信息 .这个信息应该 如果服务器解码 从URL传递到 CGI脚本。

        2
  •  2
  •   pavium    15 年前

    参照 this link 为了解释。

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

    我可以推荐本文中讨论的第三种方法,因为它避免了使用 索引文件 在中间。

        3
  •  1
  •   Walter Mundt    15 年前

    在那里,您可以有一个类似index.php的文件,检查服务器的路径信息,并处理整个目录树。虽然我不知道如何关闭它,但是您可以简单地让index.php检查一个非空的$_服务器['path_info']并通过header()函数用404代码响应。