3

我想拒绝目录中的所有文件,但 index.php (作为默认页面)。

这个解决方案几乎可以工作:

Deny from all
<Files index.php>
    Order Allow,Deny
    Allow from all
</Files>

唯一的问题:'upload/index.php' 现在可以访问了,但 '/upload/' 不是。如何使用 htaccess 允许默认页面?

4

2 回答 2

7

您的问题是,正如您可能已经弄清楚的那样,您拒绝所有的东西,然后允许 URI 'index.php',但不允许 URI '/'——即使 '/' 被重定向到index.php 在幕后,它仍然是一个不同的 URI,因此它也应该被允许。

最简单的方法是使用FilesMatch指令,如下所示:

order allow,deny
<FilesMatch "^(index\.php)?$">
    allow from all
</FilesMatch>

正则表达式的^(index\.php)?$意思是“index.php 或什么都没有”。

于 2012-08-24T18:52:37.883 回答
0

您可以尝试使用 mod_rewrite,将您所拥有的替换为:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(index.php)?$
RewriteRul ^ - [L,F]
于 2012-08-24T18:51:16.460 回答