【发布时间】:2018-05-25 12:23:46
【问题描述】:
问题:假设一个 URL 正在请求一个不存在的文件,例如mydomain.com/index.php/bogus
没有名为“bogus”的文件夹,所以我希望得到“404 not found”响应,但 Apache 将请求发送到 /index.php(确实存在)。为什么?如何更改它以响应“404 not found”?
我想,理论上,Apache 这样做是为了让我为文件夹“bogus”(但它不存在)生成一个自定义索引页面。但在实践中,通过返回一个 200 响应的页面,它会给搜索引擎和意外访问者造成混乱。我在“index.php”中的 PHP 代码不需要这个 URL,因此它会在其动态导航例程中生成损坏的链接。
我尝试禁用索引 (Option -Indexes) 和目录索引 (DirectoryIndex disabled) 并删除 .htaccess (AllowOverride None)。这些都没有改变反应。我搜索了 stackoverflow,它有很多“如何提供文件而不是 404”,但事实恰恰相反:我希望 Apache 返回 404,而不是从文件系统的更高层提供 PHP 文件。
我的服务器环境是 Windows Server 2008、Apache 2.2.22 和 PHP 5.3。没有 mod_rewrite。
【问题讨论】:
标签: php apache .htaccess http-status-code-404 pathinfo