使用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 相关文章推荐
php array_flip() 删除数组重复元素
Jan 14 PHP
php下清空字符串中的HTML标签的代码
Sep 06 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
Nov 10 PHP
一个显示效果非常不错的PHP错误、异常处理类
Mar 21 PHP
php实例分享之mysql数据备份
May 19 PHP
THINKPHP内容分页代码分享
Jan 14 PHP
PHP计算指定日期所在周的开始和结束日期的方法
Mar 24 PHP
Yii2 GridView实现列表页直接修改数据的方法
May 16 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
PHP绕过open_basedir限制操作文件的方法
Jun 10 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
Oct 16 PHP
PHP实现提取多维数组指定一列的方法总结
Dec 04 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
php下清空字符串中的HTML标签的代码
2010/09/06 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
PHP实现的简单缓存类
2015/07/29 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
PHP实现的曲线统计图表示例
2016/11/10 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
thinkphp整合系列之极验滑动验证码geetest功能
2019/06/18 PHP
类似框架的js代码
2006/11/09 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
js表单验证实例讲解
2016/03/31 Javascript
基于JS实现导航条flash导航条
2016/06/17 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
layui radio性别单选框赋值方法
2018/08/15 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
js canvas实现橡皮擦效果
2018/12/20 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
[01:08:17]2018DOTA2亚洲邀请赛3月29日 小组赛B组 EG VS VGJ.T
2018/03/30 DOTA
用Python进行基础的函数式编程的教程
2015/03/31 Python
Python实现找出数组中第2大数字的方法示例
2018/03/26 Python
对numpy中数组元素的统一赋值实例
2018/04/04 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
Python3+Django get/post请求实现教程详解
2021/02/16 Python
荷兰牛仔裤网上商店:Jeans Centre
2018/04/03 全球购物
瀑布模型都有哪些优缺点
2014/06/23 面试题
校园新闻广播稿
2014/01/10 职场文书
教师节演讲稿
2014/05/06 职场文书
经济贸易系毕业生求职信
2014/05/31 职场文书
承诺书样本
2014/08/30 职场文书
企业管理制度设计时要注意的几种“常见病”!
2019/04/19 职场文书
基于Python实现一个春节倒计时脚本
2022/01/22 Python
深入理解pytorch库的dockerfile
2022/06/10 Python