使用.htaccess来防止图片被盗链
具体操作,在图片目录下放置.htaccess的文件(Windows主机貌似不支持此功能),内容如下
[code]RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !biaodianfu.com [NC]
RewriteCond %{HTTP_REFERER} !google.cn [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/replace.gif [R,NC,L]
RewriteRule ^(.*)$ http:\/\/www.biaodianfu.com\/image\/$1 [L]
[/code]
对Rewrite规则简单的说明下
[code]RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !biaodianfu.com [NC]
RewriteCond %{HTTP_REFERER} !google.cn [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC][/code]
这部分代码是判断是否盗链,即,如果用户不是直接输入,不是来源于Google或者百度就执行下列转向:
[code]RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/replace.gif [R,NC,L][/code]
如果判定以下格式文件(jpg、gif、png、bmp、swf、jpeg)被盗链,就把所有文件用image 目录下的 replace.gif 图片替换掉(需要注意的是替换显示的图片不要放在设置防盗链的目录下)。如果照上面的规则判断出图片请求不是盗链的,就执行以下转向:
[code]RewriteRule ^(.*)$ http:\/\/image.biaodianfu.com\/image\/$1 [L][/code]
意思是对目录下所有的请求都转向到目标服务器,比如有个图片原来的 url 是 http://www.biaodianfu/img/logo.gif ,现在就会转到http://image.biaodianfu/image/logo.gif去。在此之前需要把原服务器 img 目录下的文件统统拷贝到图片服务器的 image 目录下,转向才会真正可用。
同样要防止别人盗链只要将文件格式做下改变就可以了。
顺便书名下R、NC 和 L 代表的意思:R 指的是转向,NC 指的是不区分大小写 ,L 的作用是指明本次转向到此结束,后续的转向不受先前判断语句的影响。
另外推荐一个在线生成防止盗链的.htaccess文件的网站:http://www.htmlbasix.com/disablehotlinking.shtml 婵犵數鍋為崹鍫曞箰閹间絸鍥焼瀹ュ懏妲悗骞垮劚椤︻垳绮堥崒鐐村€甸柨婵嗛娴滄繈鏌i幒鎴炲仴闁哄被鍔岄埥澶愭惞椤愩埄浼�闂傚倷鑳舵灙缂佺粯鍔欓幃褔骞樺Ч鍥e亾閸岀儐鏁冮柨鏇楀亾缂佲偓閸℃稒鐓ラ柣鏇炲€圭€氾拷闂傚倷鐒︾€笛呯矙閹达箑瀚夋い鎺戝€婚悳濠氭煙闁箑鏋撻柛瀣尵閹叉挳宕熼鐘垫殼闂備線娼уú銈壦囬悽绋跨畺妞ゆ洍鍋撴い銏℃礋椤㈡宕掑⿰搴⑿ユ繝鐢靛仜閻°劎鍒掗悩璇茬婵炴垶姘ㄧ粻鏃堟煏韫囧鈧洟鎮块鈧弻娑㈠焺閸愮偓鐣奸梺鍛娚戝Λ鍐蓟閵娿儮妲堟俊顖滅帛閹烽亶鏌f惔銏$殤闁稿鎸搁銉╁礋椤愵偅鍍靛銈嗗笒椤︿即鍩㈤崗鑲╃闁瑰鍋炵亸銊╂煕鐎n偅灏电紒杈ㄦ崌瀹曟﹢鍩℃担杞版濠电姭鎷冨鍜佹喘婵炲瓨绮嶉幃鍌炲极閹剧粯鏅搁柨鐕傛嫹