管理 撰写
August 17, 2010 @ 17:11
所谓盗链,就是他人在未经本人你的同意之一,将你网站上面的资源诸如图片等一些文件的地址直接引用过去的一种行为。造成的影响:一,是伤害了你的感情,因为他们没和你打招呼;二,伤害了你的服务器的感情,因为盗链在无形中增加了你服务器的流量,给服务器造成了负担,影响你网站的访问速度。
切入正题,其实图片防盗链的方法有很多,有直接通过网页程序编写的,再有就是通过对服务器端的设置。如果你的主机是Linux系统,装的是 Apache,则Apache下.htaccess文件就有用了。大家可能都知道,URL的静态化就是通过编写Rewrite规则在这个文件裡来实现的。比如一些wordpress的静态化插件在生成html页面后,会自动在.htaccess文件中添加伪静态地址(如http://mydioxide.com/1.html)与真实地址(如:http://mydioxide.com/?p=1)之间的对应关系。
继续回到正题。下面介绍实现此功能的步骤。因为.htaccess文件的影响范围是其所在的目录及其子目录,所以假想你的图片文件夹名为 images,那麽就请毫不犹豫的将.htaccess文件放置到该目录下。如果你还没建立此文档,- -.. Win用户只需右键,新建文本文档,然后存成.htaccess即可,并且去掉后缀.txt,(无法去掉后缀名的传到服务器上再改名).Mac用户同理打开文本编辑软件存成此名字的文档。然后用任何文本编辑软件打开此.htaccess文件。要写些什麽呢?
可以参考以下代码:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !mydioxide.com [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]
RewriteCond %{HTTP_REFERER} !qq.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
RewriteCond %{HTTP_REFERER} !yodao.com [NC]
RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
RewriteCond %{HTTP_REFERER} !douban.com [NC]
RewriteCond %{HTTP_REFERER} !xiaonei.com [NC]
RewriteCond %{HTTP_REFERER} !mozilla.com [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
RewriteRule .*\.(jpg|gif|png)$ images/err.png [L,NC]

有必要简单的介绍一下,以免一头雾水。
RewriteEngine on 的意思就是开启伪静态功能引擎,此句要有,不可省略。
RewriteCond %{HTTP_REFERER} !^$ [NC] 防盗链原理就是因为http标准协议中有个专门的字段记录referer,它一来可以追溯上一个入站地址是什么,二来对于资源文件,可以跟踪到包含显示他的网页地址是什么。这句话的意思是允许空“HTTP_REFERER”的访问,即允许用户在浏览器地址栏中直接输入图片地址时图片文件的显示。
RewriteCond %{HTTP_REFERER} !mydioxide.com [NC] 允许域名为mydioxide.com的网站访问。其他句子同理。考虑到作为博客的网站需要被那些feed供应商访问,所以你可以添加那些那站的允许规则。
RewriteRule .*\.(jpg|gif|png)$ images/err.png [L,NC]当别人盗链你网站的.jpg,.gif,.png文件的时候,自动替换图片为 /images/rss.png 。
另外说明下NC 和 L的意思。

NC 指的是不区分大小写

L 的作用是指明本次转向到此结束,后续的转向不受先前判断语句的影响

category: o申(∩_∩)〇今... | Comments(0) | Reads(534)
Add a comment

Nickname

Site URI

Email

Enable HTML Enable UBB Enable Emots Hidden Remember [Login] [Register]