一、图片防盗链原理
http标准协议中有专门的字段记录referer
一来可以追溯上一个入站地址是什么
二来对于资源文件,可以跟踪到包含显示他的网页地址是什么
因此所有防盗链方法都是基于这个Referer字段
如果是直接在浏览器上输入地址,回来进来,则没有referer头。
这也是:为什么服务器知道我们的图片是从哪儿引用的,也知道我们的客户从哪个网站链接点击过来的。
二、为什么
问题:如何配置apache服务器,用于图片防盗链?
原理:在web服务器层,根据http协议的referer头信息,来判断。
如果来自站外,则统一重写到一个很小的防盗链提醒图片上去。
具体步骤“:
1:打开apache重写模块mod_rewrite
2:在需要防盗的网站或目录,写.htaccess文件,并制定防盗链规则
三、Apache防盗链配置
Apache防盗链的配置
Apache 防盗链的第一种实现方法,可以用 Rewrite 实现。首先要确认 Apache 的 rewrite module 可用:能够控制 Apache httpd.conf 文件的,打开 httpd.conf,确保有这么一行配置:
- LoadModule rewrite_module modules/mod_rewrite.so
ServerName www.--.com
# 防盗链配置 参数
- RewriteEngine On
- RewriteCond %{HTTP_REFERER} !^htp://--.com/.*$ [NC]
- RewriteCond %{HTTP_REFERER} !^htp://<span style="font-family: Arial, Helvetica, sans-serif;">--</span>.com$ [NC]
- RewriteCond %{HTTP_REFERER} !^htp://--.xxx.com/.*$ [NC]
- RewriteCond %{HTTP_REFERER} !^htp://--.xxx.com$ [NC]
- RewriteRule .*\.(gif|jpg|swf)$ htp://--.xxx.com/img/nolink.gif [R,NC]
有些用户使用的是虚拟主机,没有服务器的控制权,无法修改 httpd.conf 文件和重启服务器。那么请确认你的虚拟主机支持 .htaccess,将上面的配置写入 .htaccess 文件,放入根目录或图片所在的目录即可:
# 防盗链配置
- RewriteEngine On
- RewriteCond %{HTTP_REFERER} !^htp://--.com/.*$ [NC]
- RewriteCond %{HTTP_REFERER} !^htp://--.com$ [NC]
- RewriteCond %{HTTP_REFERER} !^htp://www.--.com/.*$ [NC]
- RewriteCond %{HTTP_REFERER} !^htp://www.--.com$ [NC]
- RewriteRule .*\.(gif|jpg|swf)$ htp://www.--.com/img/nolink.gif [R,NC]