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文件读写操作之文件写入代码
Jan 13 PHP
Linux下实现PHP多进程的方法分享
Aug 16 PHP
解析php二分法查找数组是否包含某一元素
May 23 PHP
php实现的数字验证码及数字运算验证码
Jul 30 PHP
php中删除、清空session的方式总结
Oct 09 PHP
php自定义函数实现JS的escape的方法示例
Jul 07 PHP
[原创]php实现 data url的图片生成与保存
Dec 04 PHP
PHP使用strrev翻转中文乱码问题的解决方法
Jan 13 PHP
php批量修改表结构实例
May 24 PHP
php实现支持中文的文件下载功能示例
Aug 30 PHP
PHP设计模式之装饰器模式定义与用法简单示例
Aug 13 PHP
PHP内部实现打乱字符串顺序函数str_shuffle的方法
Feb 14 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&MYSQL留言板源码
2020/07/19 PHP
PHP中文分词的简单实现代码分享
2011/07/17 PHP
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
ecshop实现smtp发送邮件
2015/02/03 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
2017/04/26 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
2011/11/30 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
innerHTML在IE中报错解决方案
2014/12/15 Javascript
IE10中flexigrid无法显示数据的解决方法
2015/07/26 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
AngularJS动态添加数据并删除的实例
2018/02/27 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
JavaScript实现放大镜效果代码示例
2020/04/29 Javascript
vue等两个接口都返回结果再执行下一步的实例
2020/09/08 Javascript
Python isinstance判断对象类型
2008/09/06 Python
python和C语言混合编程实例
2014/06/04 Python
通过数据库向Django模型添加字段的示例
2015/07/21 Python
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
2019/03/01 Python
AUC计算方法与Python实现代码
2020/02/28 Python
python小白切忌乱用表达式
2020/05/29 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
小学教师办公室制度
2014/02/03 职场文书
银行简历自我评价
2014/02/11 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
公司财务会计主管应聘求职信
2014/09/26 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
教师党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
集团财务总监岗位职责
2015/04/03 职场文书
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python
vue实现Toast组件轻提示
2022/04/10 Vue.js