使用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 相关文章推荐
PR值查询 | PageRank 查询
Dec 20 PHP
php中的一个中文字符串截取函数
Feb 14 PHP
用PHP实现Ftp用户的在线管理
Feb 16 PHP
测试PHP连接MYSQL成功与否的代码
Aug 16 PHP
php使用mkdir创建多级目录入门例子
May 10 PHP
在Win7 中为php扩展配置Xcache
Oct 08 PHP
PHP动态页生成静态页的3种常用方法
Nov 13 PHP
php对象和数组相互转换的方法
May 12 PHP
PHP4和PHP5版本下解析XML文档的操作方法实例分析
May 20 PHP
PDO::_construct讲解
Jan 27 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
Jun 14 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
Feb 27 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/02 日漫
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
js监控IE火狐浏览器关闭、刷新、回退、前进事件
2014/07/23 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
BootStrap Validator使用注意事项(必看篇)
2016/09/28 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
2017/01/10 Javascript
javascript 中关于array的常用方法详解
2017/05/05 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
React实现全局组件的Toast轻提示效果
2018/09/21 Javascript
vue项目环境变量配置的实现方法
2018/10/12 Javascript
js实现星星打分效果
2020/07/05 Javascript
JavaScript语法约定和程序调试原理解析
2020/11/03 Javascript
pycharm中连接mysql数据库的步骤详解
2017/05/02 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
解决Django no such table: django_session的问题
2020/04/07 Python
python开发入门——列表生成式
2020/09/03 Python
让IE支持CSS3的不完全兼容方案
2014/09/19 HTML / CSS
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
JOSEPH官网:英国奢侈时尚品牌
2018/01/31 全球购物
财务工作者先进事迹材料
2014/01/17 职场文书
财务审计整改报告
2014/11/06 职场文书
党校培训学习心得体会
2016/01/06 职场文书
培训心得体会怎么写
2016/01/25 职场文书
Mysql - 常用函数 每天积极向上
2021/04/05 MySQL
利用python做表格数据处理
2021/04/13 Python