Apache服务器下防止图片盗链的办法


Posted in PHP onJuly 06, 2015

先解释一下图片防盗链和转向:

图片防盗链有什么用?

防止其它网站盗用你的图片,浪费你宝贵的流量。

图片转向有什么用?

如果你的网站以图片为主,哪天发现月底没到流量就快用光了,那就可以利用图片转向,在不修改网页的前提下,把图片下载请求转向到其它空间(比如试用主机),临时过渡。

下面开始讲解,比如你的图片都在img目录下,那就在该目录下放一个名为 .htaccess 的文件,内容如下:

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$ [NC]

RewriteCond %{HTTP_REFERER} !simcole.cn [NC]

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

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

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

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

RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/replace.gif [R,NC,L]

RewriteRule ^(.*)$ http://image.simcole.cn/image/$1 [L]

大概解释下:

RewriteCond %{HTTP_REFERER} !^$ [NC]

RewriteCond %{HTTP_REFERER} !simcole.cn [NC]

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

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

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

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

这部分是判断是否盗链,如果以上条件都成立(即访问图片的请求,既不是直接输入网址,也不是来自simcole.cn,也不是来自zhuaxia.com,也不是来自google.com,也不是来自baidu.com,也不是来自bloglines.com 的话),就执行下列转向:

RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/replace.gif [R,NC,L]

意思是让所有盗链 img 目录下 jpg、gif、png、bmp、swf、jpeg 文件的网页,显示的图片都用 image 目录下的 replace.gif 图片替换掉。注意替换显示的图片不要放在设置防盗链的 img 目录下。如果照上面的规则判断出图片请求不是盗链的,就执行以下转向:

RewriteRule ^(.*)$ http://image.simcole.cn/image/$1 [L]

意思是对 img 目录下所有的请求都转向到目标服务器,比如有个图片原来的 url 是 http://www.bebecn.com/img/girl.jpg ,现在就会转到 http://image.bebecn.com/image/girl.jpg 去。当然了你得先把原服务器 img 目录下的文件统统拷贝到临时服务器的 image 目录下,转向才会真正可用。起到的效果就是把原服务器图片下载所占用的流量统统省下,让临时服务器来承受了.

PHP 相关文章推荐
用PHP进行MySQL删除记录操作代码
Jun 07 PHP
php 验证码制作(网树注释思想)
Jul 20 PHP
php 处理上百万条的数据库如何提高处理查询速度
Feb 08 PHP
一个基于PDO的数据库操作类
Mar 24 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
Jun 10 PHP
PHP中文分词 自动获取关键词介绍
Nov 13 PHP
php里array_work用法实例分析
Jul 13 PHP
UTF-8正则表达式如何匹配汉字
Aug 03 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
Dec 14 PHP
基于thinkPHP类的插入数据库操作功能示例
Jan 06 PHP
PHP+redis实现的购物车单例类示例
Feb 02 PHP
PHP设计模式之组合模式定义与应用示例
Feb 01 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
Jul 06 #PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
Jul 06 #PHP
jquery+php实现导出datatables插件数据到excel的方法
Jul 06 #PHP
php导出中文内容excel文件类实例
Jul 06 #PHP
PHP伪造来源HTTP_REFERER的方法实例详解
Jul 06 #PHP
PHP 错误处理机制
Jul 06 #PHP
帝国cms常用标签汇总
Jul 06 #PHP
You might like
PHP 年龄计算函数(精确到天)
2012/06/07 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
javascript+iframe 实现无刷新载入整页的代码
2010/03/17 Javascript
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
如何使用json在前后台进行数据传输实例介绍
2013/04/11 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
js实现对table动态添加、删除和更新的方法
2015/02/10 Javascript
浅谈JavaScript中的String对象常用方法
2015/02/25 Javascript
JavaScript中消除闭包的一般方法介绍
2015/03/16 Javascript
Angular 常用指令实例总结整理
2016/12/13 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
Python实例一个类背后发生了什么
2016/02/09 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
python使用KNN算法手写体识别
2018/02/01 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
Django之PopUp的具体实现方法
2019/08/31 Python
基于python实现查询ip地址来源
2020/06/02 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
2020/11/11 Python
python爬虫爬取图片的简单代码
2021/01/18 Python
HTML5地理定位与第三方工具百度地图的应用
2016/11/17 HTML / CSS
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
领导接待方案
2014/03/13 职场文书
大队干部竞选演讲稿
2014/04/28 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
抗洪救灾感谢信
2015/01/22 职场文书
解决Python保存文件名太长OSError: [Errno 36] File name too long
2022/05/11 Python
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技