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 相关文章推荐
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
Apr 18 PHP
使用PHP获取网络文件的实现代码
Jan 01 PHP
PHP MemCached 高级缓存应用代码
Aug 05 PHP
PHP isset()与empty()的使用区别详解
Aug 29 PHP
利用PHP+JS实现搜索自动提示(实例)
Jun 09 PHP
PHP 获取文件权限函数介绍
Jul 11 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
Jun 04 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
Oct 01 PHP
php编写批量生成不重复的卡号密码代码
May 14 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
Nov 21 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
Laravel 之url参数,获取路由参数的例子
Oct 21 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使用适合阅读的格式显示文件大小的方法
2015/03/05 PHP
php获取远程文件大小
2015/10/20 PHP
laravel validate 设置为中文的例子(验证提示为中文)
2019/09/29 PHP
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
在线所见即所得HTML编辑器的实现原理浅析
2015/04/25 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
2017/07/27 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
vue观察模式浅析
2018/09/25 Javascript
对angularJs中ng-style动态改变样式的实例讲解
2018/09/30 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
微信小程序如何获取群聊的openGid以及名称详解
2019/07/17 Javascript
小程序实现左滑删除效果
2019/07/25 Javascript
微信小程序批量上传图片到七牛(推荐)
2019/12/19 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
Python下的subprocess模块的入门指引
2015/04/16 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
对Python w和w+权限的区别详解
2019/01/23 Python
使用python制作一个解压缩软件
2019/11/13 Python
Python如何实现线程间通信
2020/07/30 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
HTML5 Canvas概述
2009/08/26 HTML / CSS
HTML5中的网络存储实现方式
2020/04/28 HTML / CSS
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2014/07/21 面试题
自查自纠工作总结
2014/10/15 职场文书
升学宴学生答谢词
2015/01/05 职场文书
2015年党员承诺书
2015/01/21 职场文书
2015年银行员工工作总结
2015/04/24 职场文书
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技
nginx.conf配置文件结构小结
2022/04/08 Servers