拒绝所有文件,但使用htaccess拒绝索引/默认页面

时间:2012-08-24 17:47:01

标签: apache .htaccess

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

此解决方案几乎可以使用:

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

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

2 个答案:

答案 0 :(得分:7)

你的问题是,正如你可能已经想到的那样,你否认所有的东西,然后允许URI'index.php',而不是URI'/' - 即使'/'得到重定向到幕后的index.php,它仍然是一个不同的URI,因此它也应该被允许。

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

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

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

答案 1 :(得分:0)

您可以尝试使用mod_rewrite,替换您拥有的内容:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(index.php)?$
RewriteRul ^ - [L,F]