【转载】有效.htaccess 防盗链附详细说明

2015年07月28日 01:48 by:Veda 原型

转载一篇关于.htaccess设置防盗链的详细说明,对原文做了删减以清晰明了为主,一方面积累经验一方面方便其它网友。

真正有用的.htaccess 防盗链写法:

  1. RewriteEngine on
  2. RewriteCond %{HTTP_REFERER} !^$ [NC]
  3. RewriteCond %{HTTP_REFERER} !baidu.com [NC]
  4. RewriteCond %{HTTP_REFERER} !sogou.com [NC]
  5. RewriteCond %{HTTP_REFERER} !youdao.com [NC]
  6. RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
  7. RewriteCond %{HTTP_REFERER} !twitter.com [NC]
  8. RewriteCond %{HTTP_REFERER} !facebook.com [NC]
  9. RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
  10. RewriteCond %{HTTP_REFERER} !google.cn [NC]
  11. RewriteCond %{HTTP_REFERER} !google.com [NC]
  12. RewriteCond %{HTTP_REFERER} !google.com.tw [NC]
  13. RewriteCond %{HTTP_REFERER} !google.com.sg [NC]
  14. RewriteCond %{HTTP_REFERER} !google.com.hk [NC]
  15. RewriteCond %{HTTP_REFERER} !lao8.org [NC]
  16. RewriteCond %{HTTP_REFERER} !bloglines.com [NC]
  17. RewriteCond %{HTTP_REFERER} !soso.com [NC]
  18. RewriteCond %{HTTP_REFERER} !mail.qq.com [NC]
  19. RewriteCond %{HTTP_REFERER} !cn.bing.com [NC]
  20. RewriteCond %{HTTP_REFERER} !image.baidu.com [NC]
  21. RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
  22. RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
  23. RewriteRule .(gif|jpg)$ http://www.lao8.org/images/daolian.jpg[R,NC,L]
注意看最后一行,当指定类型(png或jpg)的图片出现在非上述列表中的网站时,图片会自动替换成daolian.jpg。

解释一下上述语句:

RewriteCond %{HTTP_REFERER} !^$ [NC]

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

RewriteCond %{HTTP_REFERER} !baidu.com [NC]

设置允许访问的HTTP来源,包括我们的自身站点、Google、Baidu、Bloglines、Feedburner、baidu等搜索引擎访问抓取。

RewriteRule .(gif|png|jpg)$ http://www.lao8.org/images/daolian.jpg [R,NC,L]

定义被盗链时替代的图片,让所有盗链 jpg、png、gif 等图片的网页,显示images/daolian.jpg文件。注意:daolian.jpg件体积越小越好越节省流量。

说明一下其中的 R、NC 和 L

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

特别注意:不建议同时禁止gif|jpg|png这三种图片文件,比如你已经禁止了gif,但是却用了no.gif来替换盗链图片,这样肯定会出问题。如果你想同时禁止这三种类型,可以使用以下方法来解决

  1. RewriteRule .(gif|png|jpg)$ http://www.baidu.com/xxx.png [R,NC,L]

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