使用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 相关文章推荐
session 的生命周期是多长
Oct 09 PHP
高亮度显示php源代码
Oct 09 PHP
php录入页面中动态从数据库中提取数据的实现
Oct 09 PHP
攻克CakePHP系列一 连接MySQL数据库
Oct 22 PHP
PHP 八种基本的数据类型小结
Jun 01 PHP
PHP教程之PHP中shell脚本的使用方法分享
Feb 23 PHP
php实现telnet功能示例
Apr 08 PHP
PHP类中的魔术方法(Magic Method)简明总结
Jul 08 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
Apr 27 PHP
PHP守护进程化在C和PHP环境下的实现
Nov 21 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 PHP
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
Apr 01 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/04 星际争霸
PHP 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
PHP循环结构实例讲解
2014/02/10 PHP
php通过记录IP来防止表单重复提交方法分析
2014/12/16 PHP
php实现改变图片直接打开为下载的方法
2015/04/14 PHP
php实现可逆加密的方法
2015/08/11 PHP
WordPress开发中的get_post_custom()函数使用解析
2016/01/04 PHP
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
深入理解Node.js的HTTP模块
2016/10/12 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
仿淘宝JSsearch搜索下拉深度用法
2018/01/15 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
Python中用于检查英文字母大写的isupper()方法
2015/05/19 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
Python字符编码转码之GBK,UTF8互转
2020/02/09 Python
安装多个版本的TensorFlow的方法步骤
2020/04/21 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
2020/08/03 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
英国现代绅士品牌:Hackett
2017/12/17 全球购物
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
几个常见的消息中间件(MOM)
2014/01/08 面试题
11月升旗仪式讲话稿
2014/02/15 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
项目转让协议书
2014/10/27 职场文书
承诺函格式模板
2015/01/21 职场文书
施工安全员岗位职责
2015/04/11 职场文书
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技