小站只有100个IIS,盗链后经常是连主页都打不开,就想着弄个图片防盗链,在网上找了一下资料,正则表达式的写法啊,ISAPI_REWRITE基本配置啊等等,找来啃了一天终于发现有三个方法实现.

第一、号称最简单的方法,在CSS中加入以下代码 img {filter:expression(this.不能去掉 ? "" (!this.complete) ? "" :
this.runtimeStyle.filter
= ("progidXImageTransform.Microsoft.AlphaImageLoader(src='" + this.src +
"')") + String(this.不能去掉 = true).substr(0, 0) +(this.src =
"http://www.5x5y.cn/blog/logo.gif").substr(0, 0) )
);}很遗憾,虽然看不懂但我试了不成功。查了一下苏沈小雨的CSS行为手册,说只有IE才支持CSS的expression行为,我用的不是,失败。


二、使用apache文件FileMatch限制,首先要确认你的服务器或空间的服务器解译引擎为Apache2,还有支持.htaccess客户设置文
件, 如果你有自己的服务器就请先对./conf/httpd.conf 文件做以下修改 找到:#LoadModule rewrite_module
modules/mod_rewrite.so
把前面的 # 给去丢 找到等一个 AllowOverride None 改为 AllowOverride All 重启Apache2服务器
接下就是在 新建一介.htaccess 文件加入以下内容:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://www.g-feel.cn/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.g-feel.cn$ [NC]
RewriteRule .*.(jpg|jpeg|gif|png|bmp)$  [R,NC]

或者RewriteRule \.(gif|jpg|png)$ 你的图片地址 [R=301,L]
其中有色的地方都是要改为你的:
红色:就是改为你提供下载页面的地址,也就是只有通过这个地址才可以下载你所提供的东东。如果你有多个域名或允许链接的网站就像第二行和第二行那样加上就行了
蓝色:就是要保护文件的扩展名(以|分开),也就是说以这些为扩展名的文件只有通过红色的地址才可以访问。
绿色:如果不是通过红色的地址访问蓝色这些为扩展名的文件时就回重定向到绿色地址上。
然后把.htaccess放到附件文件夹attachments里
第二种方法测试可用

第三种方法就是我现在用的方法,因为我的服务器环境是IIS6.0的,没法用第二种方法,那个在自己电脑上测试可用。
如果你的服务支持ISAPI_Rewrite,那么你就可以用这个方法了
isapi_rewrite利用正则表达式进行替换规则的表示。
进行正则表达式的编写的时候,做好了匹配表达式和格式化表达式,我们可以把它们放到安装目录下的httpd.ini里面。文件保存后,不需重新启动iis即可生效。 在httpd.ini里加入
RewriteCond Referer: (?!http://www.pf55.com.*).*
RewriteCond Referer: (?!http://www.myjxtx.com.*).*
RewriteRule .*/upload_files/.*.(?:gif|jpg|jpeg|png|bmp) /err.gif [I,O]

把网址修改为你的网址。upload_files为你要防止盗连的图片目录,点前面加"",err.gif是你想在盗链的时候替换的图片,放在网站根目录下
修改时建议用Editplus,我一开始用记事本来改的,结果iis rewriter静态优化都失败了
这样图片防盗链就做好了

转自:http://www.phpwind.net/read/622475

IIS下图片防盗连设置详解的更多相关文章

  1. 完美的nginx图片防盗链设置详解

    一般,我们做好防盗链之后其他网站盗链的本站图片就会全部失效无法显示,但是您如果通过浏览器直接输入图片地址,仍然会显示图片,仍然可以右键图片另存为下载文件!依然可以下载?这样就不是彻底的防盗链了! [r ...

  2. lnmp/nginx系统真正有效的图片防盗链完整设置详解

    http://www.it300.com/article-15345.html 关于nginx防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链并不是真正的彻底的防盗链! ...

  3. windows下的定时任务设置详解

    windows下的定时任务设置详解 一.总结 一句话总结: 1.php.exe是什么? 就是php中自带的一个exe,不是我们写的,这个exe是可以执行其他的PHP的 二.windows下的定时任务设 ...

  4. Android图片缓存之Bitmap详解

    前言: 最近准备研究一下图片缓存框架,基于这个想法觉得还是先了解有关图片缓存的基础知识,今天重点学习一下Bitmap.BitmapFactory这两个类. 图片缓存相关博客地址: Android图片缓 ...

  5. IIS负载均衡-Application Request Route详解第四篇:使用ARR实现三层部署架构(转载)

    IIS负载均衡-Application Request Route详解第四篇:使用ARR实现三层部署架构 系列文章链接: IIS负载均衡-Application Request Route详解第一篇: ...

  6. IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm(转载)

    IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm 自从本系列发布之后,收到了很多的朋友的回复!非常感谢,同时很多朋友问到了一些问题,有些问 ...

  7. IIS负载均衡-Application Request Route详解第一篇: ARR介绍(转载)

    IIS负载均衡-Application Request Route详解第一篇: ARR介绍 说到负载均衡,相信大家已经不再陌生了,本系列主要介绍在IIS中可以采用的负载均衡的软件:微软的Applica ...

  8. MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解

    MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Mycat介绍 1>.什么是Mycat Mycat背后是 ...

  9. loadrunner 运行脚本-Run-time Settings-Browser Enmulation设置详解

    运行脚本-Run-time Settings-Browser Enmulation设置详解 by:授客 QQ:1033553122 浏览器模拟 所有Internet Vuser Header包含一个标 ...

随机推荐

  1. Qt: 网络编程之UDP(理论+实例)

    http://blog.csdn.net/rl529014/article/details/52888525

  2. 【转】(DT系列三)系统启动时, dts 是怎么被加载的

    原文网址:http://www.cnblogs.com/biglucky/p/4057481.html 一,主要问题:系统在启动的时候,是怎么加载 dts的:Lk,kernel中都应调查. 二:参考文 ...

  3. [Design Pattern] Proxy Pattern 简单案例

    Proxy Pattern, 即代理模式,用一个类代表另一个类的功能,用于隐藏.解耦真正提供功能的类,属于结构类的设计模式. 下面是 代理模式的一个简单案例. Image 定义接口,RealImage ...

  4. SRM593(1-250pt,500pt)

    SRM 593 DIV1 250pt 题意:有如下图所示的平面,每个六边形有坐标.将其中一些六边形染色,要求有边相邻的两个六边形不能染同一种颜色.给定哪些六边形需要染色,问最少需要多少种颜色. 解法: ...

  5. webex录屏

    你在寻找好用的录屏软件吗?商用级品质的 WebEx Recorder 就是一款优秀的录屏软件.WebEx Recorder可以录制全屏或指定窗口,可以设定是否包含声音,生成的文件体积极小且极清晰,录制 ...

  6. 图片左右循环连续滚动代码,解决marquee的留白问题

    <marquee ONMOUSEOUT="this.start()" ONMOUSEOVER="this.stop()" DIRECTION=" ...

  7. [Protractor] Testing With Protractor Page Objects

    Protractor Page Objects are a recommended for testing your AngularJS applications. Page Objects abst ...

  8. Java基础知识强化21:Java中length、length()、size()区别

    1.java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性.2.java中的length()方法是针对字符串String说的,如果想看这个 ...

  9. Android(java)学习笔记259:JNI之NDK开发步骤

    1. NDK开发步骤(回忆一下HelloWorld案例): (1)创建工程 (2)定义native方法 (3)创建jni文件夹 (4)创建c源文件放到jni文件夹 (5)拷贝jni.h头文件到jni目 ...

  10. Linux crontab命令

    --常用参数:crontab -l               //查看当前用户下的cron任务crontab -e               //编辑当前用户的定时任务crontab -u  jo ...