大家好,又见面了,我是你们的朋友全栈君。
巧用ISAPI_Rewrite规则写IIS防盗链
关键是httpd.ini的设置 首先,必须要保证httpd.ini有可写权限,设置isapi_rewrite安装文件夹IIS_来宾,IIS_进程读写权限。 httpd.ini默认设置如下:
RewriteCond Host: (. ) RewriteCond Referer: (?!http:///1.*).*
我们在它后面加上一句
RewriteRule .*/.(?:gif|jpg|png|exe|rar|zip) /block.gif [I,O]
即可实现gif/jpg/png/exe/rar/zip文件的防盗链,盗链页面显示的是/block.gif(改图片放到你要做防盗链的站的目录下)。block.gif是一个体积较少的图片文件,我们可以在上面打上自己网站的版权标志和防盗链声明。 如果按照上面设置,则除本站以外的所有网站均不能使用这里的图片,如果要允许一些例外的网站比如google,baidu以及其它一些非营利性网站引用该怎么办呢?我们可以用如下正则表达式来实现
RewriteCond Referer: (?!http://(?:www/.uurenti/.com|www/.google/.com|www/.baidu/.com)).
如果想允许所有google子站和baidu子站形如images.baidu.com,images.google.com等站则做如下设置:
RewriteCond Referer: (?!http://(?:*/.uurenti/.com|uurenti/.com|*/.google/.com|google/.com|*/.baidu/.com|baidu/.com)).
至此,一个相当有效的防盗链系统已经出来了,但如上设置有一个问题,如果浏览者浏览了盗链页面后访问本站页面,则被盗链图片的缓存会影响图片的正常显示。把
RewriteRule .*/.(?:gif|jpg|png|exe|rar|zip) /block.gif [I,O]
改为
RewriteRule .*/.(?:gif|jpg|png|exe|rar|zip) /block.gif [I,O,N]
方可。参数N的意思是重新从站点请求文件而不是从本地缓存读取。
最后,你如果想那个站点放盗链,那只需要到IIS下该站点属性—ISAPI筛选器—添加……REWRITE.DLL(在你的安装目录下)
然后重新启动IIS!
转自:http://2seu.com/yeguizu/Article/xingwei/200810/150.html
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/163491.html原文链接:https://javaforall.cn