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判断字符以及字符串的包含方法属性
Aug 30 PHP
php 数组的创建、调用和更新实现代码
Mar 09 PHP
用php将任何格式视频转为flv的代码
Sep 03 PHP
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
Nov 01 PHP
php中根据某年第几天计算出日期年月日的代码
Feb 24 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
Jun 21 PHP
php递归函数中使用return的注意事项
Jan 17 PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
PHP记录页面停留时间的方法
Mar 30 PHP
利用PHP抓取百度阅读的方法示例
Dec 18 PHP
PHP设计模式之工厂模式详解
Oct 24 PHP
PHP 断点续传实例详解
Nov 11 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入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
php生成图片缩略图的方法
2015/04/07 PHP
PHP大神的十大优良习惯
2016/09/14 PHP
利用PHP抓取百度阅读的方法示例
2016/12/18 PHP
php获取访问者浏览页面的浏览器类型
2017/01/23 PHP
ThinkPHP3.1.2 使用cli命令行模式运行的方法
2020/04/14 PHP
JavaScript模拟push
2016/03/06 Javascript
两种方法解决javascript url post 特殊字符转义 + & #
2016/04/13 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
用jquery的attr方法实现图片切换效果
2017/02/05 Javascript
详解用node编写自己的cli工具
2017/05/23 Javascript
jQuery选择器之属性筛选选择器用法详解
2017/09/19 jQuery
Node.js JSON模块用法实例分析
2019/01/04 Javascript
Angular实现svg和png图片下载实现
2019/05/05 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
Python中字典的浅拷贝与深拷贝用法实例分析
2018/01/02 Python
python实现用户管理系统
2018/01/10 Python
python画出三角形外接圆和内切圆的方法
2018/01/25 Python
Python实现的读写json文件功能示例
2018/06/05 Python
有关Python的22个编程技巧
2018/08/29 Python
对python当中不在本路径的py文件的引用详解
2018/12/15 Python
基于python二叉树的构造和打印例子
2019/08/09 Python
nginx搭建基于python的web环境的实现步骤
2020/01/03 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
CSS3实现莲花绽放的动画效果
2020/11/06 HTML / CSS
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
HTML5在canvas中绘制复杂形状附效果截图
2014/06/23 HTML / CSS
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
Puma印度官网:德国运动品牌
2019/10/06 全球购物
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
测试驱动开发的主要步骤是什么
2014/12/10 面试题
爱与责任师德演讲稿
2014/08/26 职场文书
《春酒》教学反思
2016/02/22 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
Tomcat弱口令复现及利用
2022/05/06 Servers
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL