我想拒绝目录中的所有文件,但拒绝index.php(作为默认页面)。
这种解决方案几乎有效:
Deny from all
<Files index.php>
Order Allow,Deny
Allow from all
</Files>
唯一的问题是:"upload/index.php"现在是可访问的,但"/upload/"不是。如何允许使用htaccess访问默认页面?
你的问题是,正如你可能已经发现的那样,你拒绝了所有的东西,然后允许URI"index.php",但不允许URI"/"——即使"/"在幕后被重定向到index.php,它仍然是一个不同的URI,因此它也应该被允许。
最简单的方法是使用FilesMatch指令,如下所示:
order allow,deny
<FilesMatch "^(index.php)?$">
allow from all
</FilesMatch>
正则表达式^(index.php)?$
的意思是"index.php或者什么都没有"。
您可以尝试使用mod_rewrite,将现有内容替换为:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(index.php)?$
RewriteRul ^ - [L,F]