使用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 Squid中可缓存的动态网页设计
Sep 17 PHP
不要轻信 PHP_SELF的安全问题
Sep 05 PHP
php 3行代码的分页算法(求起始页和结束页)
Oct 21 PHP
php中的观察者模式
Mar 24 PHP
打造超酷的PHP数据饼图效果实现代码
Nov 23 PHP
ThinkPHP模板替换与系统常量及应用实例教程
Aug 22 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
Nov 22 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
Dec 25 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
Oct 29 PHP
详解Yii2.0 rules验证规则集合
Mar 21 PHP
TP5框架页面跳转样式操作示例
Apr 05 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
全国中波电台频率表
2020/03/11 无线电
PHP图片上传类带图片显示
2006/11/25 PHP
PHP insert语法详解
2008/06/07 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
javascript 类定义的4种方法
2009/09/12 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
2013/10/24 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
Vue.js系列之vue-router(上)(3)
2017/01/03 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
JavaScript中错误正确处理方式小结你用对了吗
2017/10/10 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
VSCode 配置uni-app的方法
2020/07/11 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
matplotlib绘制正余弦曲线图的实现
2021/02/22 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
美国从事品牌鞋类零售的连锁店:Famous Footwear
2016/08/25 全球购物
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
大学生旷课检讨书
2014/01/22 职场文书
工会主席岗位责任制
2014/02/11 职场文书
优秀党员获奖感言
2014/02/18 职场文书
国际商务英语专业求职信
2014/07/08 职场文书
商业企业管理专业求职信
2014/07/10 职场文书
群众路线教育实践活动心得体会(四风)
2014/11/03 职场文书
2014个人年终工作总结范文
2014/12/15 职场文书
小鞋子观后感
2015/06/05 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL