不修改网页前提下实现图片临时转移同时可实现防盗链
由于过五一,张自然好几天没写文章了,这里先跟大家道个歉,今天张自然就写一篇不修改网页前提下实现图片临时转移同时可实现防盗链的方法吧!
像QQ空间,百度空间,新浪博客等都保护了自己的图片不让别人盗链,当有人盗链的时候,就返回一张图片告诉别人这是盗链的。但这些互联网大亨们的防盗链是由单独的服务器组建的防盗链系统,我们普通的个人站长恐怕没有这个能力,那张自然就想我们是不是可以简单的实现像新浪这种防盗链呢?张自然找到的方法空间WEB服务必需是Apache的,IIS不能用到这个功能。
或许你会说我闲的,但如果你的网站以图片为主,图片防盗链就很有用了。
好了,我不说废话了,步入正题,以下张自然所介绍的方法既可以实现我上文所介绍的图片防盗链也可以实现我文章标题所说的“如何在不修改网页前提下实现图片临时转移”!
为什么我们要转移图片呢,比如哪天我们发现月底没到流量就快用光了,所以我们就要想如何在不修改网页的前提下,把图片请求转移到其它空间(比如试用主机),临时过渡。那这个方法就有用了!
下面张自然开始讲解,比如你的图片都在img目录下,那就在该目录下放一个名为 .htaccess 的文件,关于.htaccess这个文件张自然以前专门写了一篇文章,去看看吧:………………………………
.htaccess代码内容如下:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !zhangziran.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/fangdaolian.gif [R,NC,L]
RewriteRule ^(.*)$ http:\/\/img1.zhangziran.com\/$1 [L]
张自然先大概解释一下:
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !zhangziran.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
(张自然友情提示:如果你用了任何第三方的订阅器,或者是其他的搜索,都要把相应的网址规则添加上去,搜索引擎的快照要用到!)
这部分是判断是否盗链,如果以上条件都成立(即访问图片的请求,既不是直接输入网址,也不是来自zhangziran.com,也不是来自google.com,也不是来自baidu.com的话),就执行下列转向:
RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/fangdaolian.gif [R,NC,L]
意思是让所有盗链 img 目录下 jpg、gif、png、bmp、swf、jpeg 文件的网页,显示的图片都用 image 目录下的 fangdaolian.gif 图片替换掉。注意替换显示的图片不要放在设置防盗链的 img 目录下。
如果照上面的规则判断出图片请求不是盗链的,就执行以下转向:
RewriteRule ^(.*)$ http:\/\/img1.zhangziran.com\/$1 [L]
意思对 img 目录下所有的请求都转向到目标服务器,比如有个图片原来的 url 是 //www.zhangziran.com/img/boy.gif,现在就会转到 http://img1.zhangziran.com/boy.gif 去。当然了你得先把原服务器 img 目录下的文件统统拷贝到临时服务器的 image 目录下,转向才会真正可用。起到的效果就是把原服务器图片下载所占用的流量统统省下,让临时服务器来承受了。