我有这个用户目录,其中包含我所有用户的个人资料图片。 当我使用图像标记时,它指向该用户目录。如果有人 想要使用直接链接访问该图像,他们可以。我想要 阻止他们直接访问图像。我可以用吗? yii中的资产经理要做到这一点或我需要的是完全的 不同的事 ?
答案 0 :(得分:1)
这应该这样做,甚至允许没有HTPP_REFERER的访问者:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourotherdomain.com [NC]
RewriteRule ^path/to/user/(.+)?(jpg|jpeg|gif|png|tiff)$ http://yourdomain.com/do_not_hot_link.png [NC, R, L]
只需将yourdomain.com替换为您的域名,将最后一个网址替换为“禁止访问”页面(请求将重定向到此页面!)
答案 1 :(得分:0)
有很多方法可以实现它。并且不确定Yii中是否存在一些功能。
在.htaccess文件中有一些简单的方法可以做到这一点。
第一种方法检查HTTP_REFERER,如果它没有多少,您的域显示403 Forbidden页面:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_REFERER} !your_domain
RewriteRule ^images - [F,L]
其中your_domain
实际上是您的域名,
并且images
是用户个人资料图片文件夹。
在HTTP_REFERER中存在一些缺点,可能不会被某些客户端发送或被代理服务器或防火墙削减。
另一种方法是在你的应用中设置一些cookie然后在.htaccess中检查它:
setcookie("show_img", 1, time()+3600, "/");
然后
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_COOKIE} !show_img=([^;]+) [NC]
RewriteRule ^images - [F,L]
这种方法实际上并不会阻止访问者使用直接链接查看它。但它肯定会给想要从服务器插入图像的网站管理员带来很多麻烦。