使用.htaccess设置图片防盗链的详细方法

news2024/11/29 18:35:51

对于虚拟主机用户来说,最方便的莫过于利用.htaccess设置图片防盗链了。上网搜了一下,.htaccess规则写法很多,但是大部分的区别在于最后一行,下面我们先看看正确的.htaccess防盗链写法,稍后我再详细解释一下最后一行的重点

真正有用的.htaccess写法为

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !jb51.net [NC]
RewriteCond %{HTTP_REFERER} !youdao.com [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !twitter.com [NC]
RewriteCond %{HTTP_REFERER} !facebook.com [NC]
RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
RewriteCond %{HTTP_REFERER} !google.cn [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !google.com.tw [NC]
RewriteCond %{HTTP_REFERER} !google.com.sg [NC]
RewriteCond %{HTTP_REFERER} !google.com.hk [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]
RewriteCond %{HTTP_REFERER} !soso.com [NC]
RewriteCond %{HTTP_REFERER} !mail.qq.com [NC]
RewriteCond %{HTTP_REFERER} !cn.bing.com [NC]
RewriteCond %{HTTP_REFERER} !image.baidu.com [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
RewriteRule .(png|jpg)$ /no.gif [R,NC,L]

我把.htaccess文件和no.gif文件一起上传到了根目录,注意看最后一行,当指定类型(png或jpg)的图片出现在非上述列表中的网站时,图片会自动替换成no.gif。

解释一下上述语句:

1、RewriteCond %{HTTP_REFERER} !^$ [NC]
允许空“HTTP_REFERER”的访问,即允许用户在浏览器地址栏中直接输入图片地址时图片文件的显示。一般而言,这是可选的,不过,建议这么设置,如果强迫必须具有“HTTP_REFERER”才能访问,可能会带来某些问题,比如说在用户通过代理服务器访问时。

2、 RewriteCond %{HTTP_REFERER} !zhukun.net [NC]
设置允许访问的HTTP来源,包括我们的自身站点、Google、Baidu、Bloglines、Feedburner、feedsky等。

3、 RewriteRule .(jpg|png)$ /no.gif [R,NC,L]
定义被盗链时替代的图片,让所有盗链 jpg、png 等图片的网页,显示根目录下的 no.gif 文件。注意:这里必须有一个“/”,而且no.gif件体积越小越好,越小就越节省流量。

4、说明一下其中的 R、NC 和 L
R 就是转向的意思
NC 指的是不区分大小写
L 指明本次转向到此结束,后续的转向不受先前判断语句的影响

特别注意:不建议同时禁止gif|jpg|png这三种图片文件,比如你已经禁止了gif,但是却用了no.gif来替换盗链图片,这样肯定会出问题。如果你想同时禁止这三种类型,可以使用以下方法来解决:

RewriteRule .(gif|png|jpg)$ http://farm3.static.flickr.com/2743/4462030670_dc36df0e3d_o.png [R,NC,L]

即用其它服务器上(未设置过防盗链)的图片来替换演示。

本方法已在Godaddy的免费空间上测试成功,再次声明一下,清风小荷塘原创文章,转载请标明来源。

下面是其它网友的补充,直接本地例外一个目录

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/images
RewriteRule ^.*$ - [L]
RewriteCond %{REQUEST_FILENAME} \.(jpg|gif|bmp|zip|rar|mp3|txt|png|wma|wmv)$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !www.laoyao.me [NC]
RewriteCond %{HTTP_REFERER} !laoyao.me [NC]
RewriteCond %{HTTP_REFERER} !www.zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !www.google.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !www.google.com.hk [NC]
RewriteCond %{HTTP_REFERER} !google.com.hk [NC]
RewriteCond %{HTTP_REFERER} !www.google.cn [NC]
RewriteCond %{HTTP_REFERER} !google.cn [NC]
RewriteCond %{HTTP_REFERER} !www.baidu.com [NC]
RewriteCond %{HTTP_REFERER} !www.baidu.cn [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.cn [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]
RewriteCond %{HTTP_REFERER} !www.ask.com [NC]
RewriteCond %{HTTP_REFERER} !www.163.com [NC]
RewriteCond %{HTTP_REFERER} !www.yahoo.com [NC]
RewriteCond %{HTTP_REFERER} !www.sogou.com [NC]
RewriteCond %{HTTP_REFERER} !www.soso.com [NC]
RewriteCond %{HTTP_REFERER} !www.sina.com.cn [NC]
RewriteCond %{HTTP_REFERER} !www.msn.com [NC]
RewriteCond %{HTTP_REFERER} !www.feedsky.com [NC]
RewriteCond %{HTTP_REFERER} !www.feedburner.com [NC]
RewriteRule (.*) /images/error.gif [R,NC,L]

代码说明:代码第二行,意思是将网站images目录的权限打开,也就是说images文件夹下的图片不进行防盗链,为什么呢?因为我们的盗链警告图片放在这个目录下,你要是不把这个目录权限打开,那么别人盗链的时候,连这张盗链警告图片也显示不出来,只能显示红叉叉,这不是我们想要的效果。代码第四行为需要防盗链文件的后缀名,可以自行根据需要修改。后边那些代码的意思是哪些网站可以不防盗链,都是一些搜索引擎之类的,还有自己站的网址。代码最后一行为盗链时显示的警告图片。也可以将这张图片存放到其他的网站,比如某些图片存储空间,这样的话就可以更加节省本站流量了。

补充方法三:

.htaccess写法为如下,下载本文的附件,附件中包括了PSD源文件。周到吧,为了不想再做图片的,只要打开改一下网址就可以用了,当然也可以自己设计!国外虚拟主机流量太小,图片防盗链接是必须做的。

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !yziw.net [NC]
RewriteCond %{HTTP_REFERER} !youdao.com [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !twitter.com [NC]
RewriteCond %{HTTP_REFERER} !facebook.com [NC]
RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
RewriteCond %{HTTP_REFERER} !google.cn [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !google.com.tw [NC]
RewriteCond %{HTTP_REFERER} !google.com.sg [NC]
RewriteCond %{HTTP_REFERER} !google.com.hk [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]
RewriteCond %{HTTP_REFERER} !soso.com [NC]
RewriteCond %{HTTP_REFERER} !mail.qq.com [NC]
RewriteCond %{HTTP_REFERER} !cn.bing.com [NC]
RewriteCond %{HTTP_REFERER} !image.baidu.com [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
RewriteRule .(gif|png|jpg)$ http://www.yziw.net/images/linkeldiy.png [R,NC,L]

注意:最后一行替换图片要改成自己的

禁止图片外链.htaccess文件下载

继续补充一下

先解释一下图片防盗链和转向:

Q 图片防盗链有什么用?
A 防止其它网站盗用你的图片,浪费你宝贵的流量。

Q 图片转向有什么用?
A 如果你的网站以图片为主,哪天发现月底没到流量就快用光了,那就可以利用图片转向,在不修改网页的前提下,把图片下载请求转向到其它空间(比如试用主机),临时过渡。

下面开始讲解,比如你的图片都在img目录下,那就在该目录下放一个名为 .htaccess 的文件,内容如下:

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !chong4.com.cn [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]

RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/replace.gif [R,NC,L]

RewriteRule ^(.*)$ http:\/\/image.chong4.com.cn\/image\/$1 [L]

大概解释一下:

RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !chong4.com.cn [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]

这部分是判断是否盗链,如果以上条件都成立(即访问图片的请求,既不是直接输入网址,也不是来自chong4.com.cn,也不是来自zhuaxia.com,也不是来自google.com,也不是来自baidu.com,也不是来自bloglines.com 的话),就执行下列转向:

RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/replace.gif [R,NC,L]

意思是让所有盗链 img 目录下 jpg、gif、png、bmp、swf、jpeg 文件的网页,显示的图片都用 image 目录下的 replace.gif 图片替换掉。注意替换显示的图片不要放在设置防盗链的 img 目录下。

如果照上面的规则判断出图片请求不是盗链的,就执行以下转向:

RewriteRule ^(.*)$ http:\/\/image.chong4.com.cn\/image\/$1 [L]

意思对 img 目录下所有的请求都转向到目标服务器,比如有个图片原来的 url 是 http://www.chong4.com.cn/img/girl.jpg ,现在就会转到 http://image.chong4.com.cn/image/girl.jpg 去。当然了你得先把原服务器 img 目录下的文件统统拷贝到临时服务器的 image 目录下,转向才会真正可用。起到的效果就是把原服务器图片下载所占用的流量统统省下,让临时服务器来承受了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/152591.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA实现代码热更新

JAVA实现代码热更新引言类加载器实现热更新思路多种多样的加载来源SPI服务发现机制完整代码引言 本文将带领大家利用Java的类加载器加SPI服务发现机制实现一个简易的代码热更新工具。 类加载相关知识可以参考: 深入理解JVM虚拟机第三版, 深入理解JVM虚拟机(第二版)—国外的,自…

从零开始搭建一个vue demo工程

查询了不少文章,有知乎、CSDN、简书、思否等,发现如下操作性比较好,特此记录 目录 使用vue-cli创建 使用vite创建 Vue2和Vue3的代表作 参考文章 使用vue-cli创建 Vue3-使用vue/cli搭建项目 - 个人文章 - SegmentFault 思否 此处使用了v…

一文看懂基站无源交调

众所周知,有源器件会在系统中产生非线性效应。虽然已开发出多种技术来改善此类器件在设计和运行阶段的性能,但容易忽视的是,无源器件也可能引入非线性效应;虽然有时相对较小,但若不加以校正,这些非线性效应…

将vue项目打包成电脑端应用.exe

目录 第一步:下载模板electron-quick-start 第二步:进入到下载好的模板文件当中(electron-quick-start) 第三步:打包自己的项目(npm run build) 第四步:删掉官方demo下的index.html文件 …

Framework入门

一入门简介Android系统建构分为四层由上到下依次是应用层,应用框架层,依赖库层,内核层,framework处于第二层,它为应用层的开发者提供基本功能,帮助开发快速构建应用程序。FrameWork框架采用c/s架构&#xf…

Java之反射爆破操作

一些方法 首先说一下-getField/Method什么的这种不带Declared只能获取到对应public的属性/方法 只有带Declared可以获取到非public的属性/方法 再看不带s和带s区别 不带s只获取对应的构造器/方法 比如说构造器 getDeclaredConstructor(int.class,String class) 就会获取不管什么…

【数据分析】【Pandas】(一)如何制作频率分布直方图

文章目录概述1. 直方图2. 密度图概述 计算一组数据的分布有助于我们更好的了解数据构成,我们可以通过直方图或密度图,将离散的数据通过连续的方式展现出来。 数据分布(频数分布):在各组按顺序排列的基础上&#xff0c…

小伍说,商业发展均是顺势而为,【字节跳动】之所以成功是因为顺应趋势,成功是必然结果!

昨天看完2021年 刘润【进化的力量】年终演讲,让我深刻感受到两点: 1、所有商业的变化,都是顺势而为! 2、所有理所当然的现在,都是曾经不可思议的未来,所有现在不可思议的未来,可能都是明天理所…

JavaSE笔记——函数式编程(高级集合类和收集器)

文章目录前言一、方法引用二、元素顺序三、使用收集器1.转换成其他集合2.转换成值3.数据分块4.数据分组5.字符串6.组合收集器总结前言 前面介绍了集合类的部分变化,事实上,Java 8 对集合类的改进不止这些。现在是时候介绍一些高级主题了,包括…

LInkedList的模拟实现

在之前的文章笔者介绍了链表的实现:无头单向非循环链表的实现!感兴趣的各位老铁可以点进来看看:https://blog.csdn.net/weixin_64308540/article/details/128397961?spm1001.2014.3001.5502对于此篇博客,在一写出来,便…

java学习day72(乐友商城)微信支付实现

今日目标: 会调用订单系统接口 实现订单结算功能 实现微信支付功能 1.订单系统接口 我们不做开发,只讲解 1.1.导入订单服务 把课前资料提供的leyou-order复制到D:\heima\code\leyou目录。 然后在工程内导入: 然后导入module&#xff1a…

java:责任链设计模式配合Spring@Order注解使用场景

java:责任链设计模式配合SpringOrder注解使用场景 1 前言 java的责任链模式,经典使用的场景为SpringMVC的doDispatch下,针对请求的过滤链式行为。实际开发场景中,可配合Spring的Order注解,定义1个有顺序的链式Compon…

我在深圳的三次工厂旅程 (一)

2019年末加入一家人工智能AI创业公司,由于公司涉及到智能硬件产品,所以有机会参与到硬件产品的整个研发测试端、产品迭代流、工厂生产序等方面的这些事情。相对于研发测试、产品迭代这些在过往的工作中经历中相对比较熟悉和接触频繁,在软件产…

鉴定完毕!来看看跨年晚会谁假唱了…欧莱雅智能画眉设备;首个AI律师下月出庭;推特又裁员;GitHub今日热榜 | ShowMeAI资讯日报

👀日报合辑 | 🎡AI应用与工具大全 | 🔔公众号资料下载 | 🍩韩信子 🎡 『谁在假唱』技术手段分析跨年演唱会上的歌手们 各大卫视的跨年演唱会,你追了几场?看出来了谁在对口型?B站Up主…

【北京理工大学-Python 数据分析-2.2Matplotlib绘制饼图、直方图、极坐标、散点图】

pyplot的基础图标函数 函数说明plt.plot(x,y,fmt,…)绘制一个坐标图plt.boxplot(data,notch,position)绘制一个箱型图plt.bar(left,height,width,bottom)绘制一个条形图plt.barh(width,bottom,left,height)绘制一个横向条形图plt.polar(theta,r)绘制极坐标图plt.psd(x,NFFT256…

Dokcer14_5:Docker Compose volumes解析、Docker Compose volumes目录路径生成规则

Dokcer14_5:Docker Compose volumes解析、Docker Compose volumes目录路径生成规则docker-compose volumes语法语法格式及其三种变体1.无来源 :匿名挂载主机系统上的目录路径2.非路径源:具名挂载(常用)主机系统上的目录…

mysql idb,frm文件复制恢复

idb是innodb数据文件frm是innodb表结构文件在数据库的data目录下可以看到 data下的目录名就是数据库名,打开该数据库文件夹对于一个表有2个文件,一个以idb结尾,一个以frm结尾直接复制粘贴是不识别的,提示找不到该表解决方法&#…

在线实习项目|Python爬虫助力疫情数据追踪在线实习项目

项目介绍 项目背景:2019-NCOV新型冠状病毒引发的肺炎牵动全国人民的心,本项目希望通过大数据技术为抗击新冠肺炎贡献一份力量。 项目目标:使用PYTHON爬虫技术爬取疫情数据,从不同维度分析数据,并用 MATPLOT…

ubuntu18.04部署DXSLAM,CNN+VSLAM,CPU实时运行

一、下载源代码 打开终端,输入命令克隆仓库 git clone https://github.com/raulmur/DXSLAM.git DXSLAM二、配置环境 We have tested the library in Ubuntu 16.04 and Ubuntu 18.04, but it should be easy to compile in other platforms. C11 or C0x CompilerPa…

虚拟化技术学习笔记8

添加网卡: 1、virt-manager: 选择虚拟机直接添加网卡操作。 2、virsh命令: virsh list virsh domiflist centos7-1 virsh attach-interface centos7-1 \ --type network \ --source default \ --model virtio \ --config 虚拟机查看网卡的添加情况&…