我的网站处理图片。每当用户上传图像时,它将存储在“imagefiles”文件夹中,但问题是用户可以通过http在Web上查看该文件夹的所有图像。为了防止这种情况,我对要禁止的文件夹的.htaccess进行了更改,但是通过这样做我无法读取图像以在网页上显示它。
那么我该如何制作这个文件夹,只有我可以用来阅读它,当用户试图通过http访问它时应该说是禁止的?
答案 0 :(得分:3)
您可以通过创建虚拟index.html
页面或禁用.htaccess
中的默认索引来禁用该文件夹的索引:
<Directory /path/to/image/folder>
Options -Indexes
</Directory>
这将阻止人们浏览所有图像的目录列表,但不会阻止他们直接访问图像。
如果您想要更精细的控制,您应该将对该文件夹的所有请求重写为PHP脚本,该脚本将检查$_REQUEST['REQUEST_URI']
以确定他们尝试加载的图像,然后如果允许他们通过任何方式查看它您选择的逻辑,您发送的图像类型的相应标题,以及readfile('/path/to/image');
答案 1 :(得分:0)
执行所需操作的最灵活方式可能是获取带有Web服务器无法访问的图像的文件夹。然后通过readfile()在页面上显示它们(如Paulpro所述)。有一个很好的例子,如何在PHP手册中这样做: http://www.php.net/manual/en/function.readfile.php 使用这种方式,您将能够非常轻松地控制用户访问您网站上的图像。
答案 2 :(得分:0)
或者您可以使用mod_rewrite禁止访问目录列表:
RewriteEngine On
RewriteBase /
RewriteRule ^imagefiles/?$ - [F,L,NC]