在IIS中使用ISAPI Rewrite组件实现图片和文件的防盗链


  大多数都是用.htaccess防盗链的,可我使用的虚拟主机是windows 2003不支持.htaccess 文件,windows 2003服务器可以用httpd.ini来控制。
  实施步骤:
  1.下载比较出名的www.helicontech.com提供的ISAPI Rewrite软件的免费版本(免费版本虽然有一些功能上的限制,但是做防盗链足够了):http://www.helicontech.com/download-isapi_rewrite3.htm
  也可以用绿色版的,可以到网上下载。下载地址:http://downinfo.myhostadmin.net/rewrite3.rar
  2.设置Rewrite文件夹的IIS_WGP组的读写权限(重要,如果不设置安装完后你的网站就会直接Service Unavailable,无法访问)。
  设置方法:
  给安装好的Rewrite文件夹上点右键,选择“属性”->“安全”->“添加”->“高级”->“立即查找”,会找到一项IIS_WGP,双击添加,确定即可。
  3.打开控制面板里的Internet 信息服务,打开网站的属性对话框里面有一项“isapi筛选器”,点击“添加”,“筛选器名称”填Rewrite,“可执行文件”项点击“浏览”,选择刚才安装的ISAPI_Rewrite的安装目录中的ISAPI_Rewrite.dll,确定即可。重启iis。
  4.修改安装目录中的httpd.ini文件(如果这个文件为“只读”属性,则去掉“只读”之后再修改) ,添加该文件的IIS_WGP组的读写权限(如果不添加权限,防盗链功能无法使用)
  网站目录里面如果没有这个文件,新建一个文本文档 改名字为httpd.ini 在此文件中添加如下代码
[ISAPI_Rewrite]
CacheClockRate 3600
RepeatLimit 32
#已配置了伪静态的不用加上面三行代码,只需要在文件最后加入下面代码
#防盗链设置
RewriteCond Host: (.+)
RewriteCond Referer: (?!http://(?:此处填写你的域名\.cn|(.*)\.此处填写你的域名\.cn|baidu\.com|(.*)\.baidu\.com|google\.com|(.*).\google.com)).*
RewriteRule .*\.(?:jpg|jpeg|gif|png|bmp|rar|zip|exe) /fangdao.gif [I,O,N]


技术说明:
RewriteCond Referer:  这里填写你的允许连接你图片的网站,其中每个域名用“|”隔开,如果需要允许baidu.com 和google.com搜索引擎蜘蛛抓取图片,可以把百度的域名加进去 .*.baidu.com|.*.google.com|.*googlebot.com

(?:jpg|jpeg|gif|png|bmp|rar|zip|exe):  这些就是你需要防盗链文件的扩展名,其中每个扩展名用“|”隔开
如果禁止某个扩展名的图片防盗链,但又要允许某几张这种格式的图片外链,可以在前面加入这几张图片的地址,比如允许别人友情链接使用你的Logo
RewriteRule (?!(/logo.gif|/images/logo.gif)).*\.(?:gif|jpg|jpeg|png)$ /block.gif [I,O,N]
注意最后面使用的 [I,O,N] ,一般也可以设置为 [I,O] ,但是有个问题,如果浏览者浏览了盗链页面后访问本站页面,则被盗链图片的缓存会影响图片的正常显示。参数N的意思是重新从站点请求文件而不是从本地缓存读取。
fangdao.gif: 别人盗链你的图片会显示这张图片,也可以设置为网页文件,比如 warning.htm

把httpd.ini上传至网站根目录
fangdao.gif也放到根目录、

下面是我使用的代码:

# ISAPI_Rewrite 1.3 版本
[ISAPI_Rewrite]

# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32

RewriteCond Host: (.+)
RewriteCond Referer: (?!http://\1.*).*
RewriteCond Referer: (?!http://(?:suiran\.cn|(.*)\.suiran\.cn|yongzi\.com|(.*)\.yongzi\.com|scdyzx\.cn|(.*).\scdyzx.cn)).*
RewriteRule .*\.(?:gif|jpg|png|exe|rar|zip|mp3|wma) /warning.gif [I,O,N]


如果组件是 ISAPI_Rewrite 3.x 版本,那么就可以使用 httpd.conf 文件

httpd.conf 代码如下:


# Version 3.x
RewriteCond %{HTTP:Host} ^(.+)$

RewriteCond %{HTTP:Referer} ^(?!http://\\1.*).*$

#添加例外‘.*\.baidu\.com’
RewriteCond %{HTTP:Referer} ^(?!http://(.*\.google\.com|.*\.google\.cn|.*\.baidu\.com).*).*$

#添加文件格式和替换文档
RewriteRule ^.*\.(?:gif|jpg|png|swf|rar|zip)$ /error.gif [NC,N,O,I]

#添加301重定向代码
RewriteCond %{HTTP:Host} ^163.com$
RewriteRule (.*) http://www.163.com$1 [NC,R=301]

需要注意的是,防盗链的功能可以防止别人的调用和IE浏览器下载,但无法防止迅雷、旋风等下载工具。

[本日志由 随然 于 2012-03-28 10:09 PM 更新]
上一篇: 西部数码的备案很给力啊
下一篇: 将ASP动态网页转换成和生成HTML静态页面的方法
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 服务器
相关日志:
评论: 1 | 引用: 0 | 查看次数: 6257
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 10 字 | UBB代码 关闭 | [img]标签 关闭