2010-02-14 37 views
27

所有外部網址看起來都像'module/action?key1 = param1'。沒有可能的定製 - 但速度很快。 區別在於第一個使用PHP的GET,第二個使用PATH_INFO。PHP中的PATH_INFO究竟是什麼?

我見過PATH_INFO幾次,但仍然不知道究竟是什麼。它有什麼作用?

回答

34

實際上,PATH_INFO與提供PHP頁面的Apache Web服務器相關,而不是PHP本身。

PATH_INFO是Apache在打開AcceptPathInfo directive時設置的環境變量。它將包含追蹤路徑名信息,該信息跟隨實際文件名或現有目錄中不存在的文件,無論該請求是被接受還是被拒絕。然後將環境變量傳遞給負責渲染頁面的Apache/CGI模塊。

該變量可通過PHP以$_SERVER['PATH_INFO']訪問。

例如,假設位置/test/指向僅包含單個文件here.html的目錄。然後請求/test/here.html/more/test/nothere.html/more都收集/morePATH_INFO

Apache Core Documentation: AcceptPathInfo Directive

+8

閱讀你的答案後,我們可以推斷出依賴PATH_INFO是不好的做法,事實並非如此。 PATH_INFO是CGI定義的一部分(正如SimonSinCity指出的那樣)。它受到大多數Web服務器的支持,而不僅僅是Apache。 – 2014-08-09 09:29:50