我想拒绝目录中的所有文件,但是index.php(作为默认页面)。
此解决方案几乎可以使用:
Deny from all
<Files index.php>
Order Allow,Deny
Allow from all
</Files>
唯一的问题是:'upload / index.php'现在可以访问,但'/ upload /'不是。如何允许使用htaccess的默认页面?
答案 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]