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 相关文章推荐
phpinfo 系统查看参数函数代码
Jun 05 PHP
PHP chmod 函数与批量修改文件目录权限
May 10 PHP
php在线代理转向代码
May 05 PHP
PHP生成指定长度随机数最简洁的方法
Jul 14 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
Mar 13 PHP
PHP 常用的header头部定义汇总
Jun 19 PHP
CI框架简单邮件发送类实例
May 18 PHP
Centos6.5和Centos7 php环境搭建方法
May 27 PHP
laravel学习教程之关联模型
Jul 30 PHP
php外部执行命令函数用法小结
Oct 11 PHP
Yii2框架自定义验证规则操作示例
Feb 08 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
May 13 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留言本源码
2009/11/11 PHP
PHP 一个比较完善的简单文件上传
2010/03/25 PHP
Cygwin中安装PHP方法步骤
2015/07/04 PHP
PHP levenshtein()函数用法讲解
2019/03/08 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
jQuery点击tr实现checkbox选中的方法
2013/03/19 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
javascript 兼容各个浏览器的事件
2015/02/04 Javascript
Javascript实现的Map集合工具类完整实例
2015/07/31 Javascript
AngularJS 所有版本下载地址
2016/09/14 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
2017/07/12 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
es6函数之rest参数用法实例分析
2020/04/18 Javascript
Python不规范的日期字符串处理类
2014/06/10 Python
Pyhton中防止SQL注入的方法
2015/02/05 Python
python让图片按照exif信息里的创建时间进行排序的方法
2015/03/16 Python
python实现文本界面网络聊天室
2018/12/12 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
如何使用python自带IDLE的几种方法
2020/10/10 Python
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
外贸采购员岗位职责
2014/03/08 职场文书
开学典礼决心书
2014/03/11 职场文书
2014年计划生育协会工作总结
2014/11/14 职场文书
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL