使用Apache的htaccess防止图片被盗链的解决方法


Posted in PHP onApril 27, 2013

方法一:
所需要的命令如下:

RewriteEngine on   RewriteCond %{ HTTP_REFERER } !^$  
 RewriteCond %{ HTTP_REFERER } !^http://(www.)?simue.com /.*$ [NC]  
 RewriteRule .(gif &line;jpg)$ - [F]

如果觉得让别人的页面开个天窗不好看,那可以用一张图片来代替:

查看代码

 RewriteEngine on   RewriteCond %{ HTTP_REFERER } !^$  
 RewriteCond %{ HTTP_REFERER } !^http://(www.)?simue.com/.*$ [NC]  
 RewriteRule .(gif &line;jpg)$ http://www.simue.com /替代图片文件名 [R,L] 
需要注意的是,如果通过FTP方式将创建好的.htaccess上传到服务器上,传输模式应为ASCII而非Binary。上传到服务器后,应将其属性通过 CHMOD修改为644 或“RW-R?R?”,这样,可以保证服务器能够使用同时无法通过浏览器修改,当然,.htaccess的可读属性也存在一定的风险:攻击者可通过它找出 您要保护的对象或认证文件位置——解决办法是将认证文件.htpasswd放到网站根目录之外,这样,便无法通过网络找到它了。

方法二:
查看代码01 RewriteEngine on   RewriteCond %{HTTP_REFERER} !^$ [NC]  
 RewriteCond %{HTTP_REFERER} !simue.com [NC]  
 RewriteCond %{HTTP_REFERER} !baidu.com [NC]  
 RewriteCond %{HTTP_REFERER} !google.com [NC]  
 RewriteRule .*\.(gif|jpg)$ http://www.simue.com /no.png [R,NC,L]

简单的解释一下上述语句:
1、RewriteCond %{HTTP_REFERER} !^$ [NC]

允许空“HTTP_REFERER”的访问,即允许用户在浏览器地址栏中直接输入图片地址时图片文件的显示。一般而言,这是可选的,不过,建议这么设置,如果强迫必须具有“HTTP_REFERER”才能访问,可能会带来某些问题,比如说在用户通过代理服务器访问时。

2、RewriteCond %{HTTP_REFERER} !simue.com [NC]

设置允许访问的HTTP来源,包括我们的网站 自身、Google、Baidu等。

3、RewriteRule .*\.(gif|jpg|png)$ http://www.simue.com/no.png [R,NC,L]

定义被盗链时替代的图片,让所有盗链 jpg、gif、png 等文件的网页,显示根目录下的 no.png 文件。注意:替换显示的图片不要放在设置防盗链的目录中,并且该图片文件体积越小越好。当然你也可以不设置替换图片,而是使用下面的语句即可:

RewriteRule .*\.(gif|jpg|png)$ - [F]

4、说明一下其中的R、NC 和 L

R 就是转向的意思
NC 指的是不区分大小写
L 的作用是指明本次转向到此结束,后续的转向不受先前判断语句的影响

5、防止盗链的文件类型

上例中是 gif、jpg、png,而根据需要,可更改或添加其他文件类型,如rar、swf等,不同文件扩展名间使用“|”分割。

PHP 相关文章推荐
输出控制类
Oct 09 PHP
亲密接触PHP之PHP语法学习笔记1
Dec 17 PHP
php缓存技术详细总结
Aug 07 PHP
模板引擎smarty工作原理以及使用示例
May 25 PHP
CI(CodeIgniter)框架配置
Jun 10 PHP
php判断GIF图片是否为动画的方法
Sep 04 PHP
使用PHP接受文件并获得其后缀名的方法
Aug 05 PHP
php生成二维码
Aug 10 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
Jan 29 PHP
浅谈php调用python文件
Mar 29 PHP
php use和include区别总结
Oct 13 PHP
PHP中用Trait封装单例模式的实现
Dec 18 PHP
php 模拟get_headers函数的代码示例
Apr 27 #PHP
php获取本地图片文件并生成xml文件输出具体思路
Apr 27 #PHP
php笔记之:php函数range() round()和list()的使用说明
Apr 26 #PHP
php笔记之:php数组相关函数的使用
Apr 26 #PHP
php笔记之:有规律大文件的读取与写入的分析
Apr 26 #PHP
php笔记之:文章中图片处理的使用
Apr 26 #PHP
php笔记之:初探PHPcms模块开发介绍
Apr 26 #PHP
You might like
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
php基础知识:类与对象(1)
2006/12/13 PHP
Ajax+PHP 边学边练 之二 实例
2009/11/24 PHP
详解PHP swoole process的使用方法
2017/08/26 PHP
flash javascript之间的通讯方法小结
2008/12/20 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
JavaScript中this的使用详解
2013/11/08 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2015/12/28 Javascript
node.js基于mongodb的搜索分页示例
2017/01/22 Javascript
浅谈Node异步编程的机制
2017/10/18 Javascript
jQuery实现checkbox全选功能完整实例
2018/07/12 jQuery
JS+canvas画布实现炫酷的旋转星空效果示例
2019/02/13 Javascript
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
react+redux仿微信聊天界面
2019/06/21 Javascript
JavaScript在web自动化测试中的作用示例详解
2019/08/25 Javascript
[00:47]DOTA2荣耀之路6:玩不了啦!
2018/05/30 DOTA
剖析Django中模版标签的解析与参数传递
2015/07/21 Python
python matplotlib库绘制条形图练习题
2019/08/10 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
日本热销NO.1胶原蛋白冻:Aishitoto爱希特多
2019/06/20 全球购物
简述DNS进行域名解析的过程
2013/12/02 面试题
线程同步的方法
2016/11/23 面试题
成教毕业生自我鉴定
2013/10/23 职场文书
土木工程毕业生推荐信
2013/10/28 职场文书
小学评语大全
2014/04/22 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
补充协议书
2015/01/28 职场文书
企业年会祝酒词
2015/08/11 职场文书
施工安全责任协议书
2016/03/23 职场文书
Mysql Show Profile
2021/04/05 MySQL
CSS 文字装饰 text-decoration & text-emphasis 详解
2021/04/06 HTML / CSS
PostgreSQL将数据加载到buffer cache中操作方法
2021/04/16 PostgreSQL
详解Vue的sync修饰符
2021/05/15 Vue.js