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