使用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下实现折线图效果的代码
Apr 28 PHP
php全排列递归算法代码
Oct 09 PHP
解析phpstorm + xdebug 远程断点调试
Jun 20 PHP
php格式化日期和时间格式化示例分享
Feb 24 PHP
PHP引用(&)各种使用方法实例详解
Mar 20 PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 PHP
php加密解密字符串示例
Oct 13 PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
Sep 05 PHP
PDO::errorCode讲解
Jan 28 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中var_export与var_dump的区别分析
2010/08/21 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
PHP转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
PHP自定义大小验证码的方法详解
2013/06/07 PHP
浅析php与数据库代码开发规范
2013/08/08 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
php的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
为jquery.ui.dialog 增加“自动记住关闭时的位置”的功能
2009/11/24 Javascript
JQUERY操作JSON实例代码
2010/02/09 Javascript
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
javascript的变量、传值、传址、参数之间关系
2015/07/26 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
2017/03/08 Javascript
jQuery实现选中行变色效果(实例讲解)
2017/07/06 jQuery
Vue.extend构造器的详解
2017/07/17 Javascript
详解基于Vue+Koa的pm2配置
2017/10/24 Javascript
JavaScript模板引擎实现原理实例详解
2018/12/14 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
vue路由插件之vue-route
2019/06/13 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
django settings.py 配置文件及介绍
2019/07/15 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
2020/04/15 Python
会计学财务管理专业个人的自我评价
2013/10/19 职场文书
影视制作岗位职责
2013/12/04 职场文书
上课打牌的检讨书
2014/02/15 职场文书
企业爱心捐款倡议书
2015/04/27 职场文书
Python利用机器学习算法实现垃圾邮件的识别
2021/06/28 Python
MySQL中连接查询和子查询的问题
2021/09/04 MySQL
Win11 Build 25179预览版发布(附更新内容+ISO官方镜像下载)
2022/08/14 数码科技