如何防止 apache2 接受没有文件扩展名的 URL?

如何防止 apache2 接受没有文件扩展名的 URL?

我注意到 apache2 会加载一个页面,比如 info.php,即使指定的 url 没有文件扩展名,比如 mysite.com/info

我认为您需要执行某种形式的 mod_rewrite 才能获得该功能,但显然这是我的系统中默认的功能。

有什么方法可以阻止这种默认行为,以便只能指定具有文件扩展名的页面?

我已禁用重写,仅供参考。

答案1

您遇到的是 apache 核心模块之一的一部分:mod_dir

您要查找的指令是,DirectoryIndex当未指定绝对文件名时,它会告诉 apache 查找某些文件名。默认值通常是这样的一行:

DirectoryIndex index.html index.php default.html default.php default.pl

如果您不想让它搜索这些文件并默认显示它们,您需要DirectoryIndex在 apache 配置文件中找到该行并将其注释掉或删除该DirectoryIndex语句后的所有内容。

答案2

您所看到的魔术是通过 选项实现MultiViewsmod_negotiation

来自Apache 文档

如果服务器收到对 /some/dir/foo 的请求,而 /some/dir/foo 不存在,则服务器会读取目录,查找所有名为 foo.* 的文件,并有效地伪造一个类型映射,为所有这些文件命名,为它们分配与客户端按名称请求其中一个文件时相同的媒体类型和内容编码。然后,它会选择与客户端要求最匹配的文件,并返回该文件。

通过关闭MultiViewsapache 配置或 .htaccess 文件来禁用这个魔法:

Options -MultiViews

相关内容