05 referer头与防盗链
像上图中的这个效果,当我们在网页里引用站外图片时,常出现这样的情况.
??? 服务器是怎么样知道,这个图片是在站外被引用的呢?
还有在网站的统计结果,统计用户从何而来,如下图
??? 统计时,是如何得知用户从哪儿来到的本网站呢?
在Http协议中,头信息里,有一个重要的选项: Referer
Referer: 代表网页的来源,即上一页的地址
如果是直接在浏览器上输入地址,回来进来,则没有Referer头.
这也是: 为什么服务器知道我们的图片是从哪儿引用的,也知道我们的客户从哪个网站链接点击过来的.
问题: 如何配置apache服务器,用于图片防盗链?
原理: 在web服务器层面,根据http协议的referer头信息,来判断.
如果来自站外,则统一重写到一个很小的防盗链提醒图片上去.
具体步骤:
1:打开apache 重写模块 mod_rewrite
前面的”#”去掉,并重启apache
2:在需要防盗的网站或目录,写.htaccess文件,
并指定防盗链规则
如何指定?
自然是分析referer信息,如果不是来自本站,是重写
重写规则:
哪种情况重写:
是jpeg/jpg/gif/png图片时
是referer头与localhost不匹配时
重写
怎么重写?
统一 rewirte到 某个防盗链图片
如下面的例子:[ 新建一个 .htaccess文件 写到php程序的目录中]
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} .*\.(jpg|jpeg|gif|png) [NC]
RewriteCond %{HTTP_REFERER} !localhost [NC]
RewriteRule .* http://www.zixue.it/static/image/common/zixuelogo.png