
我在本機伺服器上運行 Apache 2.4.2。我的網站的.htaccess
文件如下:
DirectoryIndex home.php
Options -Indexes
ErrorDocument 404 /404.php
當您嘗試存取瀏覽器中不存在的檔案時,這非常適合顯示 HTTP 404 頁面,但在使用下列語法存取現有檔案時,它不會顯示錯誤頁面:
http://localhost/<FileName>.php/<AdditionalCharacters>
例如,如果我轉到home.php/xyz
,home.php
頁面會加載,但 HTML 中的所有相關連結都會損壞。home.php
我的伺服器上沒有目錄!這是怎麼回事?
我可以在檔案中新增指令或規則.htaccess
來阻止此行為並拋出 HTTP 404 錯誤嗎?
答案1
這是一個稱為「path_info」的功能,通常用於從單一 CGI 腳本運行整個網站(當沒有更好的替代方案(例如 mod_rewrite)時)。
如果 URL 導致 CGI 腳本被視為目錄,Apache 將正常執行該腳本,但在PATH_INFO
環境變數中為其提供額外的路徑元件。許多 wiki 引擎都使用此功能 - 例如,您可以訪問https://wiki.archlinux.org/index.php/Beginners%27_Guide/Preparation這邊走。
這可以使用以下命令進行控制接受路徑資訊環境。