我在本地服务器上运行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这边走。
这可以使用接受路径信息环境。