使用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 运行效率总结(提示程序速度)
Nov 26 PHP
php实现rc4加密算法代码
Apr 25 PHP
php读取EXCEL文件 php excelreader读取excel文件
Dec 06 PHP
PHP不用递归实现无限分级的例子分享
Apr 18 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
Dec 01 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
Dec 18 PHP
Symfony核心类概述
Mar 17 PHP
CodeIgniter集成smarty的方法详解
May 26 PHP
php版交通银行网银支付接口开发入门教程
Sep 26 PHP
PhpStorm本地断点调试的方法步骤
May 21 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
Feb 28 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 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
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
jquery中使用ajax获取远程页面信息
2011/11/13 Javascript
js中indexof的用法详细解析
2013/12/24 Javascript
jquery、js操作checkbox全选反选
2014/03/12 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
jQuery控制元素显示、隐藏、切换、滑动的方法总结
2015/04/16 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
介绍一个简单的JavaScript类框架
2015/06/24 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
2016/11/01 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
layui中使用jquery控制radio选中事件的示例代码
2018/08/15 jQuery
在小程序Canvas中使用measureText的方法示例
2018/10/19 Javascript
JS随机密码生成算法
2019/09/23 Javascript
JavaScript原型式继承实现方法
2019/11/06 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
2020/07/15 Javascript
探索浏览器页面关闭window.close()的使用详解
2020/08/21 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
python制作websocket服务器实例分享
2016/11/20 Python
python3 中文乱码与默认编码格式设定方法
2018/10/31 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
Python-openCV读RGB通道图实例
2020/01/17 Python
如何理解python对象
2020/06/21 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
python FTP编程基础入门
2021/02/27 Python
药物学专业学生的自我评价
2013/10/27 职场文书
仓库组长岗位职责
2014/01/29 职场文书
2014最新预备党员思想汇报范文:中国梦,我的梦
2014/10/25 职场文书
2016年中学端午节主题活动总结
2016/04/01 职场文书
解决hive中导入text文件遇到的坑
2021/04/07 Python