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 相关文章推荐
也谈截取首页新闻 - 范例
Oct 09 PHP
在MongoDB中模拟Auto Increment的php代码
Mar 06 PHP
php array_map()数组函数使用说明
Jul 12 PHP
php木马webshell扫描器代码
Jan 25 PHP
PHP备份数据库生成SQL文件并下载的函数代码
Feb 05 PHP
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
Jul 03 PHP
php中常见的sql攻击正则表达式汇总
Nov 06 PHP
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
Aug 23 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
Feb 26 PHP
PHP开发制作一个简单的活动日程表Calendar
Jun 20 PHP
thinkPHP中钩子的两种配置调用方法详解
Nov 11 PHP
PHP PDOStatement::errorCode讲解
Jan 31 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中逗号与点号的区别
2013/08/05 PHP
php类中的$this,static,final,const,self这几个关键字使用方法
2015/12/14 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
javascript之水平横向滚动歌词同步的应用
2007/05/07 Javascript
javascript延时加载之defer测试
2012/12/28 Javascript
jquery复选框checkbox实现删除前判断
2014/04/20 Javascript
javaScript实现滚动新闻的方法
2015/07/30 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
Vuejs 组件——props数据传递的实例代码
2017/03/07 Javascript
Node.js连接mongodb实例代码
2017/06/06 Javascript
微信小程序冒泡事件及其阻止方法实例分析
2018/12/06 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
js常用正则表达式集锦
2019/05/17 Javascript
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
微信小程序实现手势滑动卡片效果
2019/08/26 Javascript
JavaScript使用localStorage存储数据
2019/09/25 Javascript
JS几个常用的函数和对象定义与用法示例
2020/01/15 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
[03:40]2014DOTA2国际邀请赛 B神专访:躲箭真的很难
2014/07/13 DOTA
Python3中的2to3转换工具使用示例
2015/06/12 Python
Python中operator模块的操作符使用示例总结
2016/06/28 Python
python的pstuil模块使用方法总结
2019/07/26 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
Java Unsafe类实现原理及测试代码
2020/09/15 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
2020/09/23 Python
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
Linux机考试题
2015/07/17 面试题
护理学专业推荐信
2013/12/03 职场文书
庆七一活动方案
2014/01/25 职场文书
入学申请自荐信范文
2014/02/26 职场文书
中学生励志演讲稿
2014/04/26 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
python操作xlsx格式文件并读取
2021/06/02 Python
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL