我注意到 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
您所看到的魔术是通过 选项实现MultiViews
的mod_negotiation
。
来自Apache 文档:
如果服务器收到对 /some/dir/foo 的请求,而 /some/dir/foo 不存在,则服务器会读取目录,查找所有名为 foo.* 的文件,并有效地伪造一个类型映射,为所有这些文件命名,为它们分配与客户端按名称请求其中一个文件时相同的媒体类型和内容编码。然后,它会选择与客户端要求最匹配的文件,并返回该文件。
通过关闭MultiViews
apache 配置或 .htaccess 文件来禁用这个魔法:
Options -MultiViews