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

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

我以为你需要做一些forms的mod_rewrite来获得该function,但显然这是我的系统中的默认function。

有什么办法来防止这种默认行为,所以只能指定具有文件扩展名的页面?

我已经改写禁用fyi。

你遇到的是apache的一个核心模块: mod_dir 。

您要查找的指令是DirectoryIndex这告诉apache在没有指定绝对文件名时查找某些文件名。 默认情况下通常是一个如下所示的行:

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

如果你不想让它search这些文件,并默认显示它们,你需要在你的apacheconfiguration文件中findDirectoryIndex行,然后将它注释掉,或者删除DirectoryIndex语句后面的所有内容。

你看到的魔法是由mod_negotiationMultiViews选项执行的。

从Apache文档 :

如果服务器收到/ some / dir / foo的请求并且/ some / dir / foo不存在,那么服务器将读取目录,查找所有名为foo。*的文件,并有效地伪造一个名为all文件,为它们分配相同的媒体types和内容编码,如果客户要求其名称中的一个,将会有这种编码。 然后select与客户要求最匹配的,并返回该文件。

通过在apacheconfiguration或.htaccess文件中closuresMultiViews来禁用这种魔术:

 Options -MultiViews