之前小弟博客安装了ISAPI_ReWrite来防盗链,但是发现了一个问题,只能在安装目录里httpd.conf里面进行全局配置,十分不爽,不能对单独的网站进行配置,于是更换了网上破解的新版本的isapi_rewrite 3.1.0.75 完整破解版,也配置好了 防盗链规则,但是怎么也不生效,IIS被我重启了不下20次了,还好服务器由我管理,要不然还不被骂死。

ISAPI_ReWrite3的防盗链规则如下:

# Helicon ISAPI_Rewrite configuration file
# Version 3.1.0.79

RewriteCond %{HTTP:Host} ^(.+)$
RewriteCond %{HTTP:Referer} ^(?!http://\\1.*).*$
#加入允许访问的站点
RewriteCond %{HTTP:Referer} ^(?!http://(.*\.google\.com|.*\.google\.com\.hk|.*\.baidu\.com|.*\.soso\.com|.*\.sogou\.com|.*\.youdao\.com|.*\.bing\.com|.*\.yahoo\.com|.*\.yahoo\.cn|.*\.waitalone\.cn).*).*$
#需要防盗的文件类型,logo.png就是现实的防盗图片,可以根据需求改成404文件。
RewriteRule ^.*\.(?:gif|jpg|png|exe|rar|zip)$ /404.html [NC,N,O,I]
    
只允许本站,及常用的搜索引擎链接接博客的gif等文件,其它的访问都跳到404错误页面上面,保存为 .htaccess 文件,重启IIS,结果防盗链不生效,测试过N次也没有解决。于是便开始了Google大搜索,分析解决过程如下:

1、网上查找得知,要给ISAPI_Rewrite3目录加上everyone读权限,结果还是不行。。故障依旧。

2、有人说要给ISAPI_Rewrite.dll加上Service用户的读与运行权限,测试过不行,因为我已经给他加了everyone的读与运行权限。故障依旧,规则不生效。

3、经过一整天的查找,在这位大神的博客上面发现了解决办法 http://blog.linggan.com/isapi-rewrite-3.html

4、开启软件的日记记录功能,便于查找问题的原因,做法如下:

httpd.conf文件中加上如下两句,然后访问网站

RewriteLogLevel 9
LogLevel debug

日志中记录了如下的信息

[2012-6-21 16:41:57] Begin watch directory changes failed (x:\xxxx\xxx\web\): Insufficient permissions. (拒绝访问。)

看后面的提示,大家应该明白是怎么回事了吧?肯定是文件权限的问题,由于本人的服务器权限设置比较严格,导致了 .htaccess 文件不能被ISAPI_Rewrite读取

解决问题,为目录下的 .htaccess 文件加上everyone的读取与运行/读取权限,即可。

大家可以去http://blog.linggan.com/isapi-rewrite-3.html 这里学习更多关于ISAPI_Rewrite3不生效的解决办法。