SetEnvIfNoCaseReferer"^http://aabbcc.com/"local_ref=1
OrderAllow,Deny
Allowfromenv=local_ref
Allowfrom127.0.0.1 |
第二种是使用rewrite,需要增加apache的mode_rewrite,支持.htaccess文件目录权限限制
在虚拟主机根目录增加.htaccess文件,描述从定向,把非本地地址refer的图片文件都从定向到警告图片或者警告网页上。
首先要确认你的服务器或空间的服务器解译引擎为Apache2,还有支持.htaccess客户设置文件,
如果你有自己的服务器就请先对./conf/httpd.conf文件做以下修改
找到:#LoadModulerewrite_modulemodules/mod_rewrite.so
把前面的#给去丢
找到等一个AllowOverrideNone改为AllowOverrideAll
重启Apache2服务器
接下就是做一个.htaccess文件了,其.htaccess文件内容为
RewriteEngineon
RewriteCond%{HTTP_REFERER}!^http://aabbcc.com/.*$[NC]
RewriteCond%{HTTP_REFERER}!^http://aabbcc.com$[NC]
RewriteCond%{HTTP_REFERER}!^http://www.aabbcc.com/.*$[NC]
RewriteCond%{HTTP_REFERER}!^http://www.aabbcc$[NC]
RewriteRule.*.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$http://www.aabbcc.com/err.html[R,NC] |
还有第三种:
我在解决plog禁止盗链的时候,发现个问题,也算个好方法。
plog把所有资源都自己管理起来,用resserver.php来动态显示,这样统一的入口方便添加权限操作。
同时造成上面2种方法无法使用,因为不再是apache直接访问资源文件,而是php通过文件读取。
因此只能在代码中做手脚:在读取资源文件输出之前,加如下判断代码引用
$referer=$_SERVER['HTTP_REFERER'];
$selfurl=$_SERVER['HTTP_HOST'];
if(false==strpos($referer,$selfurl))
{
echo'非法盗链!';
exit(1);
} |
这里有些偷懒,直接看引用地址中是否包含host地址,不过原理就是这样,判断referer是否是本站地址。
我们常常在下载的时候,也碰到盗链网站无法下载,报盗链的问题。要下载这类文件最简单的方法就是改referer
比方flashget中,网址下面的"引用"一栏中,直接填写下载地址就可以了。