2011-06-05 92 views
0

我有这种情况:htaccess的保护所有子文件夹和文件

/storage 
    index.php 
    other scripts.php 
    /files 
    -files and folders- 

我想拒绝所有的HTTP请求中的所有文件和/files子文件夹,但同时允许访问/storage和运行的PHP脚本。我尝试了一些规则,但它们或者只保护文件列表,或者不允许访问所有/storage文件夹。

.htaccess必须在/files之外(因为此文件夹访问PHP readfile.htaccess可能是可访问的)。

回答

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脚本中排除它,尽管许多人已经忽略了隐藏文件)。

+0

我收到500个错误 – 2011-06-06 00:03:35

+0

我的歉意,我已经添加了更新。 – preinheimer 2011-06-06 00:14:15

6

在你的根.htaccess文件/storage目录下,即把这个行:

RewriteRule ^files/ - [R=404,L,NC] 

这将引发404到所有东西的HTTP请求下files/子目录,而你.php文件就能包含文件在files/子目录下。

+0

它不起作用我仍然可以访问这些文件,例如/files/image.jpg可见 – 2011-06-07 00:27:36

+0

您的.htaccess正被读取吗?在发布之前,我已经在我的Linux,Mac和XAMPP安装上测试了上述规则,并且它在任何地方都可以使用。 – anubhava 2011-06-07 02:50:22

相关问题