Apache服务器实现防盗链



所谓盗链,是指其他网站直接链接我们网站上的文件,一般来说,盗链的对象大多为很耗带宽的大体积文件,如图片、视频等。这样造成的后果主要有:增加了服务器的流量负担,影响我们网站的访问速度。
如果你用的是Apache服务器,可通过如下两种方式防止其他站点的用户盗链我们站点文件:

1. 使用RewriteEngine模块
确保RewriteEngine被启用(httpd.conf):

  LoadModule rewrite_module modules/mod_rewrite.so

  RewriteEngine on
  RewriteCond %{HTTP_REFERER} !^http://(www.)?domain.com/.*$ [NC]
  RewriteRule .(mp3|rar)$ http://www.domain.com/nolink.png [R=301,L]


功能:
不仅屏蔽/禁止非本网站的盗链访问,还将盗链请求转给自身的网站

说明:
RewriteCond 条件:意思就是所有的mp3和rar访问如果referer不是本网站domain.com或www.domain.com
RewriteRule 规则:自动转向到指定主页
 
2. 使用.htaccess文件

    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$ [NC]
    RewriteCond %{HTTP_REFERER} !baidu.cn [NC]
    RewriteCond %{HTTP_REFERER} !google.com [NC]
    RewriteRule .*.(gif|jpg)$ http://domain.com/no.png [R,NC,L]

    RewriteCond %{HTTP_REFERER} !^$ [NC]
允许空“HTTP_REFERER”的访问,即允许用户在浏览器地址栏中直接输入图片地址时图片文件的显示。一般而言,这是可选的,不过,建议这么设置,如果强迫必须具有“HTTP_REFERER”才能访问,可能会带来某些问题,比如说在用户通过代理服务器访问时。
    RewriteCond %{HTTP_REFERER} !domain.com [NC]
设置允许访问的HTTP来源,包括我们的站点自身、Google、Baidu等。
    RewriteRule .*.(gif|jpg|png)$ http://domain.com/no.png [R,NC,L]
定义被盗链时替代的图片,让所有盗链 jpg、gif、png 等文件的网页,显示根目录下的 no.png 文件。注意:替换显示的图片不要放在设置防盗链的目录中。当然你也可以不设置替换图片,而是使用下面的语句即可:
    RewriteRule .*.(gif|jpg|png)$ – [F]

其中的R、NC 和 L
R 就是转向的意思
NC 指的是不区分大小写
L 的作用是指明本次转向到此结束,后续的转向不受先前判断语句的影响
防止盗链的文件类型

上面两例中是 mp3、rargif、jpg、png,而根据需要,可更改或添加其他文件类型,不同文件扩展名间使用“|”分割。
 



发表评论