PHP中的私有文件夹?

PHP中的私有文件夹?,php,.htaccess,directory,private,Php,.htaccess,Directory,Private,我的网站处理图像。每当用户上传图像时,它都会存储在“imagefiles”文件夹中,但问题是用户可以通过http在web上看到该文件夹的所有图像。为了防止它,我对文件夹的.htaccess进行了更改,以禁止其访问,但这样做后,我无法读取图像以在网页上显示它 那么,我如何才能使此文件夹只有我可以用来阅读它,当用户试图通过http访问它时,它应该说是禁止的?您可以通过创建一个虚拟的index.html页面来禁用该文件夹的索引,或者使用以下命令禁用.htaccess中的默认索引: <Direct

我的网站处理图像。每当用户上传图像时,它都会存储在“imagefiles”文件夹中,但问题是用户可以通过http在web上看到该文件夹的所有图像。为了防止它,我对文件夹的.htaccess进行了更改,以禁止其访问,但这样做后,我无法读取图像以在网页上显示它


那么,我如何才能使此文件夹只有我可以用来阅读它,当用户试图通过http访问它时,它应该说是禁止的?

您可以通过创建一个虚拟的
index.html
页面来禁用该文件夹的索引,或者使用以下命令禁用
.htaccess
中的默认索引:

<Directory /path/to/image/folder>
    Options -Indexes
</Directory>

选项-索引
这将阻止人们浏览所有图像的目录列表,但不会阻止他们直接访问图像


如果您想要更好的控制,您应该将对该文件夹的所有请求重写为一个PHP脚本,该脚本将检查
$\u REQUEST['REQUEST\u URI']
,以确定他们试图加载的图像,然后如果允许他们通过您选择的任何逻辑来查看该图像,您将为该图像的类型发送相应的标题,和
readfile('/path/to/image')

最灵活的方法可能是将包含图像的文件夹放在Web服务器够不着的地方。然后通过readfile()在页面上显示它们(如Paulpro所述)。php手册中有一个很好的例子说明了如何做到这一点:
使用这种方式,您将能够非常轻松地控制用户访问您网站上的图像。

或者您可以使用mod_rewrite禁用对目录列表的访问,如下所示:

RewriteEngine On
RewriteBase /

RewriteRule ^imagefiles/?$ - [F,L,NC]

我添加了虚拟index.php文件,并将其重定向到main index.html,但当我试图通过http访问它时,它会弹出下载窗口,而不是重定向。知道我做错了什么吗?