我遇到这种情况:
/storage
index.php
other scripts.php
/files
-files and folders-
我想拒绝对/files
的所有文件和子文件夹的所有HTTP请求,但同时允许访问/storage
并运行这些PHP脚本。我尝试了一些规则,但它们要么只保护文件列表,要么不允许访问所有/storage
文件夹。
.htaccess
必须在/files
之外(因为此readfile
访问此文件夹,并且可以访问.htaccess
。
答案 0 :(得分:7)
在你的root .htaccess文件中,即在/storage
目录下,输入以下行:
RewriteRule ^files/ - [R=404,L,NC]
这会将404
抛给files/
子目录下的所有HTTP请求,而.php
文件将能够包含files/
子目录下的文件。< / p>
答案 1 :(得分:0)
我认为在父目录中有这样的东西(你可能想要使用完整路径)
<Directory ./Files>
ORDER DENY, ALLOW
DENY FROM ALL
</DIRECTORY>
一般来说,我建议您只需将/ files目录放在文档根目录之外的某处以确保安全。这样,如果.htaccess意外关闭或损坏,你最终不会暴露文件。
编辑:
我很抱歉,<Directory>
指令仅在服务器配置中有效(您需要将其放在httpd.conf文件或等效文件中),而不是在.htaccess中。如果您确定要放在目录中的文件类型,可以使用<Files>
指令和各种文件类型:http://httpd.apache.org/docs/current/mod/core.html#files但是这需要放在Files
目录。 (然后可能只是将它从PHP脚本中排除,尽管许多人已经忽略了隐藏文件)。