Press "Enter" to skip to content

利用.htaccess设置图片防盗链

发现自己的文章在网络上被越来越多的人COPY,尤其是个别同志,一口气复制几十篇文章过去,连一个版权都不留,我算是服了。想来想去决定给博客增加一个防盗链功能。

对于虚拟主机用户来说,最方便的莫过于利用.htaccess设置图片防盗链了。上网搜了一下,.htaccess规则写法很多,但是大部分的区别在于最后一行,下面我们先看看正确的.htaccess防盗链写法,稍后我再详细解释一下最后一行的重点。

真正有用的.htaccess写法为
[code lang=”plain”]
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !zhukun.net [NC]
RewriteCond %{HTTP_REFERER} !youdao.com [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !twitter.com [NC]
RewriteCond %{HTTP_REFERER} !facebook.com [NC]
RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
RewriteCond %{HTTP_REFERER} !google.cn [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !google.com.tw [NC]
RewriteCond %{HTTP_REFERER} !google.com.sg [NC]
RewriteCond %{HTTP_REFERER} !google.com.hk [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]
RewriteCond %{HTTP_REFERER} !soso.com [NC]
RewriteCond %{HTTP_REFERER} !mail.qq.com [NC]
RewriteCond %{HTTP_REFERER} !cn.bing.com [NC]
RewriteCond %{HTTP_REFERER} !image.baidu.com [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
RewriteRule .(png|jpg)$ /no.gif [R,NC,L]

我把.htaccess文件和no.gif文件一起上传到了根目录,注意看最后一行,当指定类型(png或jpg)的图片出现在非上述列表中的网站时,图片会自动替换成no.gif。演示见此

解释一下上述语句:

1、RewriteCond %{HTTP_REFERER} !^$ [NC]
允许空“HTTP_REFERER”的访问,即允许用户在浏览器地址栏中直接输入图片地址时图片文件的显示。一般而言,这是可选的,不过,建议这么设置,如果强迫必须具有“HTTP_REFERER”才能访问,可能会带来某些问题,比如说在用户通过代理服务器访问时。

2、 RewriteCond %{HTTP_REFERER} !zhukun.net [NC]
设置允许访问的HTTP来源,包括我们的自身站点、Google、Baidu、Bloglines、Feedburner、feedsky等。

3、 RewriteRule .(jpg|png)$ /no.gif [R,NC,L]
定义被盗链时替代的图片,让所有盗链 jpg、png 等图片的网页,显示根目录下的 no.gif 文件。注意:这里必须有一个“/”,而且no.gif件体积越小越好,越小就越节省流量。

4、说明一下其中的 R、NC 和 L
R 就是转向的意思
NC 指的是不区分大小写
L 指明本次转向到此结束,后续的转向不受先前判断语句的影响

特别注意:不建议同时禁止gif|jpg|png这三种图片文件,比如你已经禁止了gif,但是却用了no.gif来替换盗链图片,这样肯定会出问题。如果你想同时禁止这三种类型,可以使用以下方法来解决:
[code lang=”plain”]
RewriteRule .(gif|png|jpg)$ http://farm3.static.flickr.com/2743/4462030670_dc36df0e3d_o.png [R,NC,L]

即用其它服务器上(未设置过防盗链)的图片来替换演示。

本方法已在Godaddy的免费空间上测试成功,再次声明一下,清风小荷塘原创文章,转载请标明来源。

2010.07.16补充,如果你没看懂,不防看看梦游科技的这篇文章

60 Comments

  1. 浅心 2010-03-28

    8) 正在看你的博客 正好更新 哈哈 做楼主 学习下

    • 鱼求雨 2010-03-31

      貌似今天很多站被百度拔毛,不信可以看看自己的百度收录页面是否减少。

  2. 久酷 2010-03-28

    如果流量够用可以先不设防盗链 8) 8)

    • admin 2010-03-28

      我不能天天关注着流量,说不定哪一天流量突然太大引起了GD的关注然后关闭我的空间呢。呵呵,还是未雨绸缪点好

        • admin 2010-03-28

          我用GD的免费空间搭建的图床,可以看看我博客上的图片地址 :idea:

  3. 柳城 2010-03-28

    这个暂时还用不着。呵~~

    • admin 2010-03-28

      没事,你将来用得着的时候再回来看就是了 :mrgreen:

  4. 万戈 2010-03-28

    用过,不过碰到手动复制超级有耐心的朋友,服了

    • admin 2010-03-28

      他要是真有耐心这么做,我也就算了,不怪他。因为肯把图片下载再上传的朋友,就冲他的认真程度,我也原谅他了

  5. Blinux 2010-03-28

    咱们没有坤哥那样的流量,暂时不用担心

    • admin 2010-03-28

      呵呵,树大招风。流量大也有很多纠结的事,将来你会知道的

  6. 胡安安 2010-03-28

    虽然没什么流量,但这个方法一直有在用 8)
    不知道其他文件类型zip、rar等如何防盗链~

    • admin 2010-03-28

      应该也可以利用这个规则吧?别人点击下载的时候会下载一幅“禁止盗链”的图片回来?

  7. 西门 2010-03-28

    原来防止盗链图片是这样弄的呀,长见识了!

    • admin 2010-03-29

      嗯。LINUX上就是这么弄滴 8)

    • admin 2010-03-29

      伪静态?好像这二者不能相提并论吧? :?:

  8. 严重浪漫 2010-03-29

    图片防盗链,那不如在图片上加水印了?!
    随便盗,盗的越多,宣传的越多。

    • admin 2010-03-29

      有时候就是随便截取的两张图片,大部分是用QQ截图的,打上水印还要开PS比较麻烦 :!:

  9. theiter 2010-03-29

    .htaccess的功能确实很强大啊。不过,对于图片还是比较喜欢用加水印的方式,严重同意“严重浪漫”的观点;推荐个博客客户端工具(WindowsLiveWrite),我一直在用也可以直接加水印,很方便。

  10. 重阳 2010-03-29

    :roll: 伟大的apache 伟大的.htaccess

  11. 棺材中的尘埃 2010-03-30

    这个方法很实用,避免盗链
    PS:上周去了趟颐和园,拍了点照片,欢迎来踩踩

    • admin 2010-03-30

      嗯嗯,已经过去拜访了,你的PS真厉害,呵呵,PS高手! :idea:

  12. 老实人博客 2010-03-30

    从官材哪里过来看看。认识一个新博客,哈哈。学习了。

    • admin 2010-03-30

      呵呵,你们的域名都不错噢

  13. 秦大少 2010-03-30

    我的博客和图片不在一个主机上可以用这招吗? :lol:

    • admin 2010-03-30

      我的博客和图床也不在同一个服务器上啊。呵呵,我只对图床做了防盗链,博客服务器不用做

    • admin 2010-03-31

      想起了那句话,师太说到:和尚道长,你们一起上吧,我赶时间。

  14. zhiwei 2010-03-31

    我一直都是用的网络相册。。。
    以后也弄个这样的功能。。。

    • admin 2010-03-31

      一般的网络相册都有流量限制的。还要防着被墙

  15. 古墓候梅 2010-03-31

    觉得作用不是很大,还不如在图片上加水印,我用批量添加水印的工具的。
    人家转载了,不保留原始地址,就不保留,图片上有水印,怕什么?

    • admin 2010-03-31

      有是遇到超级有耐心的,把图片右击保存再上传到他自己的网络相册中去,那也就算了,就冲着他的耐心,免费送他了。。。当然,防盗链+水印是最完美的解决办法。。

Leave a Reply to 海波 Cancel reply

Your email address will not be published. Required fields are marked *