我想拒绝目录中的所有文件,但 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]