使用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 相关文章推荐
非常不错的MySQL优化的8条经验
Mar 24 PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
Jul 01 PHP
PHP数据类型之布尔型的介绍
Apr 28 PHP
php之XML转数组函数的详解
Jun 07 PHP
微信营销平台系统?刮刮乐的开发
Jun 10 PHP
Codeigniter实现智能裁剪图片的方法
Jun 12 PHP
使用URL传输SESSION信息
Jul 14 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
May 18 PHP
form表单传递数组数据、php脚本接收的实例
Feb 09 PHP
PHP7中I/O模型内核剖析详解
Apr 14 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
May 08 PHP
基于Laravel-admin 后台的自定义页面用法详解
Sep 30 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
在线增减.htpasswd内的用户
2006/10/09 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
User Scripts: Video Download by User Scripts
2007/05/14 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
2013/04/24 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
Javascript编写2048小游戏
2015/07/07 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
100多个基础常用JS函数和语法集合大全
2017/02/16 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
vue基于element的区间选择组件
2018/09/07 Javascript
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
Vue如何跨组件传递Slot的实现
2020/12/14 Vue.js
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python如何实现一个刷网页小程序
2018/11/27 Python
利用python实现短信和电话提醒功能的例子
2019/08/08 Python
利用Python的sympy包求解一元三次方程示例
2019/11/22 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
python垃圾回收机制(GC)原理解析
2019/12/30 Python
美国最大的珠宝商之一:Littman Jewelers
2016/11/13 全球购物
麦当劳印度网上订餐:McDelivery
2020/03/16 全球购物
商务日语专业毕业生求职信
2013/10/26 职场文书
聘任书模板
2014/03/29 职场文书
检举信的格式及范文
2014/04/04 职场文书
新文化运动的基本口号
2014/06/21 职场文书
2015年采购工作总结
2015/04/10 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书
如何用JS实现简单的数据监听
2021/05/06 Javascript
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python