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

时间:2009-12-12 23:15:55

标签: php apache friendly-url

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

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

到文件index.php?在第一时间,您可能会认为,如果此请求导致404错误页面是正确的,因为站点根目录中没有名为index.php的文件夹

BTW,是否有可能关闭这个Apache功能(如果它是一个功能),以便这些请求真的以404结束?

3 个答案:

答案 0 :(得分:10)

这不是网址重写功能。或者至少它不需要 。见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传递到之前的URL   CGI脚本。

答案 1 :(得分:2)

有关说明,请参阅this link

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

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

答案 2 :(得分:1)

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