使用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 相关文章推荐
让你的网站首页自动选择语言转跳
Dec 06 PHP
PHP设计模式 注册表模式(多个类的注册)
Feb 05 PHP
php实现mysql封装类示例
May 07 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
Jun 23 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
Jan 26 PHP
一个简单至极的PHP缓存类代码
Oct 23 PHP
php 从一个数组中随机的取出若干个不同的数实例
Dec 31 PHP
thinkPHP5 tablib标签库自定义方法详解
May 10 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
PHP 7.4中使用预加载的方法详解
Jul 08 PHP
phpinfo的知识点总结
Oct 10 PHP
PHP中的异常处理机制深入讲解
Nov 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
第一个无线电台是由谁发明的
2021/03/01 无线电
dedecms系统常用术语汇总
2007/04/03 PHP
比file_get_contents稳定的curl_get_contents分享
2012/01/11 PHP
php 启动报错如何解决
2014/01/17 PHP
php 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
PHP常用函数之获取汉字首字母功能示例
2019/10/21 PHP
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
jQuery+Ajax实现无刷新分页
2015/10/30 Javascript
AngularJS入门之动画
2016/07/27 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
JavaScript探测CSS动画是否已经完成的方法
2016/08/30 Javascript
webpack+vue.js快速入门教程
2016/10/12 Javascript
React操作真实DOM实现动态吸底部的示例
2017/10/23 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
从0搭建vue-cli4脚手架
2020/06/17 Javascript
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python del()函数用法
2013/03/24 Python
在Windows8上的搭建Python和Django环境
2014/07/03 Python
Python中为什么要用self探讨
2015/04/14 Python
python使用KNN算法手写体识别
2018/02/01 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
详解Python3 pickle模块用法
2019/09/16 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
python数据库编程 Mysql实现通讯录
2020/03/27 Python
使用PyCharm官方中文语言包汉化PyCharm
2020/11/18 Python
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
日本PLST在线商店:日本时尚杂志刊载的人气服装
2016/12/10 全球购物
英国蛋糕装饰用品一站式商店:Craft Company
2019/03/18 全球购物
学校安全检查制度
2014/01/27 职场文书
乡镇综治宣传月活动总结
2014/07/02 职场文书
普通党员对照检查材料
2014/08/28 职场文书
2015年销售内勤工作总结
2015/04/27 职场文书
公司借款担保书
2015/09/22 职场文书