我注意到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_negotiation的MultiViews选项执行的。
从Apache文档 :
如果服务器收到/ some / dir / foo的请求并且/ some / dir / foo不存在,那么服务器将读取目录,查找所有名为foo。*的文件,并有效地伪造一个名为all文件,为它们分配相同的媒体types和内容编码,如果客户要求其名称中的一个,将会有这种编码。 然后select与客户要求最匹配的,并返回该文件。
通过在apacheconfiguration或.htaccess文件中closuresMultiViews来禁用这种魔术:
Options -MultiViews