一般的个人blog,在写文章时,总会配以各种各样的图片,让文章更形象生动。不过,最近我的博客因为访问量上涨,导致流量也跟着涨了上来。虽然图片不是很多,但是一个月流量大概在15G~20G的范围。总的看来,是因为我的blog之前一直没加防盗链的原因,如果加上防盗链,估计流量会少30%左右。虽然偶用的是VPS,一个月几百G接近1TB的流量,肯定是不会超的。不过,细想一下,要是不设置防盗链,岂不是当了别人的免费图床?
所以,总结了一下,图片防盗链主要有两大方法:
第一个方法,是尽量给你的图片加上水印,这样就算别人盗了你的图片,至少原始出处还在,在这个垃圾采集站漫天飞的互联网时代,一定程度上能保护博主原创的权益。
第二个方法,就是通过Apache的Rewrite功能,来实现防盗链,也即别人的网页中引用了你的图片后,图片不会被显示,或者被重定向到另外的地方。
下面就说说Apache中简单的实现图片防盗链的方法:
首先,得确保你的Apache已经加载并启用了mod_rewrite模块,然后就可以通过.htaccess来实现了。
在你的blog存放图片的目录中,新建一个.htaccess文件,这个文件中设置的rewrite规则,就会应用到你的图片目录,及其子目录中。在.htaccess文件中加入如下内容:
1 | RewriteEngine on |
第三到四行,是定义允许引用图片的网站地址,采用白名单的形式,把你允许引用你的图片的网站地址都统统加进去。
最后一行,是跳转地址,如果其他网站引用你的任何图片(包括gif,jpg,png,jpeg和bmp格式),都会跳转到后面指定的地址。比如,我这里就指定了一个404的图片。后面的参数NC,表示不区分大小写。
下面是后面各种参数的说明:
- R[=code](force redirect) 强制外部重定向 强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
- F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
- G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
- P(force proxy) 强制使用代理转发。
- L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。
- N(next round) 重新从第一条规则开始运行重写过程。
- C(chained with next rule) 与下一条规则关联 如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。 8)T=MIME-type(force MIME type) 强制MIME类型
- NS (used only if no internal sub-request) 只用于不是内部子请求
- NC(no case) 不区分大小写
- QSA(query string append) 追加请求字符串
- NE(no URI escaping of output) 不在输出转义特殊字符 例如:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zed
- PT(pass through to next handler) 传递给下一个处理 例如: RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理 Alias /def /ghi
- S=num(skip next rule(s)) 跳过num条规则
- E=VAR:VAL(set environment variable) 设置环境变量