首页 > 网站 > IIS > 正文

真正可用的IIS的ISAPI-Rewrite伪静态URL图片防盗链规则写法

2024-08-29 03:12:47
字体:
来源:转载
供稿:网友
网站程序的URL伪装法、服务器端的收费插件法和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: (?!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]
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表