使用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 25 PHP
CodeIgniter php mvc框架 中国网站
May 26 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
May 06 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
Jul 17 PHP
PHP运行环境配置与开发环境的配置(图文教程)
Jun 04 PHP
destoon整合ucenter后注册页面不跳转的解决方法
Jun 21 PHP
检测codeigniter脚本消耗内存情况的方法
Mar 21 PHP
smarty模板数学运算示例
Dec 11 PHP
PHP微商城开源代码实例
Mar 27 PHP
ThinkPHP 5.x远程命令执行漏洞复现
Sep 23 PHP
laravel 实现设置时区的简单方法
Oct 10 PHP
实例讲解PHP表单
Jun 10 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&mysql(一)
2006/10/09 PHP
PHP中预定义的6种接口介绍
2015/05/12 PHP
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
面向对象的Javascript之一(初识Javascript)
2012/01/20 Javascript
Javascript自定义排序 node运行 实例
2013/06/05 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
当json键为数字时的取值方法解析
2013/11/15 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
JS实现页面进入和返回定位到具体位置
2016/12/08 Javascript
Angular实现跨域(搜索框的下拉列表)
2017/02/16 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
在小程序中使用canvas的方法示例
2018/09/17 Javascript
JS使用对象的defineProperty进行变量监控操作示例
2019/02/02 Javascript
Vue实现table上下移动功能示例
2019/02/21 Javascript
pm2发布node配置文件ecosystem.json详解
2019/05/15 Javascript
微信公众号平台接口开发 获取微信服务器IP地址方法解析
2019/08/14 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
如何在Python中编写并发程序
2016/02/27 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
python实战教程之自动扫雷
2018/07/13 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
2019/02/18 Python
python时间与Unix时间戳相互转换方法详解
2020/02/13 Python
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
JD Sports比利时官网:英国领先的运动鞋和运动服饰零售商
2018/10/10 全球购物
N:Philanthropy官网:美国洛杉矶基础款服装
2020/06/09 全球购物
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
大四学生毕业自荐信
2013/11/07 职场文书
商务英语本科生的自我评价分享
2013/11/15 职场文书
财务担保书范文
2014/04/02 职场文书
财务工作检讨书
2014/10/29 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
Win11查看设备管理器
2022/04/19 数码科技