IIS真正能用的ISAPI-Rewrite防盗链规则写法
发布时间:2010-03-22 13:08:00
本规则支持白名单排除式防盗链,搜索引擎友好不屏蔽,被盗链后的错误提示转向,支持各种文件类型,经作者亲验真的能用。
近来小站遇到了盗链问题,至使网站的流量枉费流失,于是被迫准备为服务器安装防盗链机制以挽救本就不宽裕的带宽。通过G.CN和B.CN搜索后得出了几种不同的方案,例如网站程序的URL伪装法、服务器端的收费插件法和ISAPI-REWRITE的规则过滤法等,考虑自身网站结构和钱包的困难问题,最终选择了后者,即现在流行用来做伪静态的ISAPI Rewrite书写规则来实现我的防盗链“梦想”。
为什么说是梦想呢?首先表示惋惜,懒人我搜来了一大票经过无数次转载而来的文章,把现呈的代码应用后发现要么根本不起作用,要么就是效果达不到我想要的,几经周折后终于把这原本认为可以轻易借鉴照搬的防盗链给完成了,恨那些只会转载和伪原创的站长们,自己也不试试就拿来填充,害了多少人浪费了大把的时间。
经过恶补正则表达式相关教程并对前辈们留下的规则进行修改后,以下ISAPI Rewrite已经在我的服务器上正常运作。
经测试四种情况正常,即站内链接正常,白名单里的链接正常,盗链者链接屏蔽,搜索引擎链接正常。
详细如下;
一、完全屏蔽所有盗链来源的写法(如已有其它规则,则置于已有规则的上面)
RewriteCond Host: (.+) RewriteCond Referer: (?!http://\1.*).* RewriteRule .*\.(?:gif|jpg|jpeg|png|bmp) /block.gif [I,O,N] |
老板,来个小解:
第一行通过RewriteCond的HOST定义其下的规则所适用的请求主机范围。
第二行通过RewriteCond的Referer定义规则适用的请求来源地址,我们都知道任何通过互联网方式访问网站都会留下Referer的痕迹,就好像我们在IIS日志里看到的一样。这里的(?!http://\1.*).*意思就是判断所有通过http协义发来的请求,都要应用规则。
第三行通过RewriteRule定义防盗链文件的后缀,这里仅是图片后缀,需要的可以添加mp3,rar等其它所有后缀。后面的/block.gif表示如果遇上这些后缀的文件被盗链后的转向,这里转向/根目录的block.gif,可以是HTML等任何文件。如果只想某个文件夹下面的文件不被盗链,只需要加上路径就可以。例如不想images和pic目录下的文件被盗,但其它可以。就要改写成:
RewriteRule (/images/|/pic/).*\.(?:gif|jpg|jpeg|png|bmp) /block.gif [I,O,N]
这种情况主要是有些站长在别人友情链接里的图片地址是在自己这的。
最后面的[I,O,N],I表示不区分大小写,O表示对URL进行标准化,可能是用来处理Unicode编码的地址(例如包含中文的URL)以及QueryString的内容,N表示重新从站点请求文件而不是从本地缓存读取文件,目的是防止当用户访问了盗你链的网站后,再回到你的网站也出现盗链提示。
提示,由于此规则是通过Referer来获取带有http://字样的地址进行过滤,因此它无法防范其它协议的盗链,比如迅雷下载。但通过任何浏览器直接访问,只要是HTTP协义的,通杀。
以上关于RewriteCond和RewriteRule的作用仅是本人的土法理解,欢迎在这方面有专业研究的朋友在评论中指正,以免误导,另外如果遇到isapi-rewrite版本问题,只要保证后面的正则式写法正确就行。
二、排除性防盗链写法
RewriteCond Host: (.+) RewriteCond Referer: (?!http://\1.*).* RewriteCond Referer: (?!http://(.*)(\.baidu\.com|\.google\.com|\.google\.cn|\.g\.cn|\.gougou\.com|\.soso\.com|\.sogou\.com|\.youdao\.com|\.bing\.com|\.yahoo\.com|\.yahoo\.cn|\.eojoo\.com)).* RewriteRule .*\.(?:gif|jpg|jpeg|png|bmp) /block.gif [I,O,N] |
老板,来个小解:
第一行同上
第二行同上
第三行通过正则表达式对第二行中的请求协义地址进行过滤,这里按上面的写法,过滤了所有流行的搜索引擎,当然也包括你自己的站,或是你同台服务器其它的站。每个不同的域名写法是\.baidu\.com,多个有|号相隔。如果是IP则这样写100\.100\.100\.100
第四行同上
这样说明应该不难理解吧,直接拿去用,按着原有格式改。
规则中出现的正则表达式符号小解:
. 表示匹配除换行符以外的任意字符
+ 表示前面的字符可以出现一到任意多次
* 表示前面的字符可以出现零到任意多次
() 表示一个表达组,可以拿它和加减乘除法一起理解
?! 表示断言这个符号后面的字符如果出现则不再进行接下去的匹配
\ 表示转义符号,比如网址中的.是规则内置的运算符号,要把它通过\转义成字符。
| 表示或者,用于连接多种可能
通过以上这“乱七八糟”的符号,竟然组成了如此强大的规则,感叹!
猜你喜欢
- 据悉,中国互联网络信息中心(CNNIC)已正式向互联网名字与编号分配机构(ICANN)递交了“。中国”域名国际申请,这意味着“。中国”域名已
- 在局域网内,ARP攻击依然占有很高比例。众所周知,ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利
- 前言:我一直把一个网站当作一个活生生的生命体来看待,而不是一行行枯燥无味的代码,而养站就像养孩子!我们如何培养起一个有用的&ldqu
- DNS服务器所提供的服务是完成将主机名和域名转换为IP地址的工作。为什么需要将主机名和域名转换为IP地址的工作呢?这是因为,当网络上的一台客
- 一项调查显示,超过60%的网民对政府网站不满意,只有7%表示满意。这的确是个值得重视的信号。网民上政府网站,要么是查看信息,要么是反映情况,
- 10月16日消息,搜狐IT发现,百度新闻对单条新闻页面进行了改版。此次改版后,百度新闻将抓取的新闻内容整合在百度专题页面上,用户阅读新闻可以
- 难怪最近老中病毒,而且每次中毒时都自动打开了RealPlayer播放器,我就很奇怪,当时每注意,直到又一次中毒。原来是RealPlayer的
- 近期由于工信部的备案之风的到来,估计苦恼了很多站长,近期也发现很多网站由于没有备案而被关闭。多少站长的血泪呀!服务器IP更改对网站排名影响|
- 在接下来的几个月内,我们将会在 AdWords 系统推出一些新的功能,为了实现这些功能,我们将会在发布商网络投放 Doubleclick 广
- 一、注册Google AdSense{$ggas_text$}单击申请按纽:开始注册:请在继续前确认所有信息都是正确的。在此之后不能更改付款
- 我是用虚拟机装了Linux,真实系统是Windows XP,在Windows XP下用Serv-u软件架设了FTP服务器,然后我们就可以在虚
- 据Google站长博客报道,Google目前允许网站管理员自行修改sitelinks(网站附加链接)。所谓的sitelinks(网站附加链接
- 作为WEB2.0的产物,博客在网上的发展非常迅猛,接触网络的人几乎没有不“博”的,从名人明星到草根百
- 想要成为一个合格的站长,做好再讲的网站是有很多因素的,下边,就这些问题说一说,如何才能建设好一个成功的网站。首先,一个成功的网站,定位一定要
- 想要修改Godaddy主机的域名,怎样修改呢?别急,我来告诉你。首先.登陆你的Account Manager.第二.在My Products
- 博客已成为很多站长的首选,它可以聚集一群有着共同好的朋友,而且,还不用像网站那样的费神。wordpress是目前比较流行的博客系统之一,wo
- 关于新发布的IE8 Beta1,网友们都纷纷下载来使用,尝到了功能强大的甜头;有的却因网络流传:安装后会覆盖原来的IE7,并且不能
- 今天继续介绍Godaddy常见问题之托管帐户上使用的是什么版本的ColdFusion。我们用的是Macromedia ColdFusion
- 在升级到WindowsSP2系统后,本人的电脑经常出现这种怪毛病,具体情况为:在上网时网关能够PING通,用Bitcomet下载文件也能够正
- 从事中文点击网赚的站长可以说是一个特殊的站长群体,这个群体不被主流网站看好,但其内部却是热闹非凡。很多的人从事网上的兼职活动都是从中文点击网