利用.htaccess文件设置图片防盗链

国外很多空间用的是CP面板,但是也有很多用DirectAdmin面板的空间(DirectAdmin,以下简称DA),DA面板的功能毕竟没有CP面板这么强大,比如说防盗链功能在面板上就没有,如果你买了DA面板的空间,但是无法防盗链的话,特别是图片站的话,那流量就是刷刷的流啊,毕竟是钱买来的。其实还有一种方法可以防盗链的,就是利用 .htaccess 文件,看看 .htaccess 文件还是很多用途的吧。

找到并打开你空间的.htaccess 文件,在没有添加内容的文件显示如下:

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

添加了防盗链规则之后的内容:

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !adong.info [NC]
RewriteCond %{HTTP_REFERER} !youdao.com [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !twitter.com [NC]
RewriteCond %{HTTP_REFERER} !facebook.com [NC]
RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
RewriteCond %{HTTP_REFERER} !google.cn [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !google.com.tw [NC]
RewriteCond %{HTTP_REFERER} !google.com.sg [NC]
RewriteCond %{HTTP_REFERER} !google.com.hk [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]
RewriteCond %{HTTP_REFERER} !soso.com [NC]
RewriteCond %{HTTP_REFERER} !mail.qq.com [NC]
RewriteCond %{HTTP_REFERER} !cn.bing.com [NC]
RewriteCond %{HTTP_REFERER} !image.baidu.com [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
RewriteCond %{HTTP_REFERER} !cnbeta.com [NC]
RewriteCond %{HTTP_REFERER} !bing.com [NC]
RewriteCond %{HTTP_REFERER} !g.cn [NC]
RewriteCond %{HTTP_REFERER} !wenwen.soso.com [NC]
RewriteCond %{HTTP_REFERER} !image.soso.com [NC]
RewriteCond %{HTTP_REFERER} !qq.com [NC]
RewriteCond %{HTTP_REFERER} !qzone.qq.com [NC]

RewriteRule .(jpg|png|bmp|swf|jpeg)$ /ad-img/replace.gif [R,NC,L]


# END WordPress

大概解释一下:

RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !adong.info [NC]
RewriteCond %{HTTP_REFERER} !youdao.com [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !twitter.com [NC]
RewriteCond %{HTTP_REFERER} !facebook.com [NC]
RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
RewriteCond %{HTTP_REFERER} !google.cn [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !google.com.tw [NC]
RewriteCond %{HTTP_REFERER} !google.com.sg [NC]
RewriteCond %{HTTP_REFERER} !google.com.hk [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]
RewriteCond %{HTTP_REFERER} !soso.com [NC]
RewriteCond %{HTTP_REFERER} !mail.qq.com [NC]
RewriteCond %{HTTP_REFERER} !cn.bing.com [NC]
RewriteCond %{HTTP_REFERER} !image.baidu.com [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
RewriteCond %{HTTP_REFERER} !cnbeta.com [NC]
RewriteCond %{HTTP_REFERER} !bing.com [NC]
RewriteCond %{HTTP_REFERER} !g.cn [NC]
RewriteCond %{HTTP_REFERER} !wenwen.soso.com [NC]
RewriteCond %{HTTP_REFERER} !image.soso.com [NC]
RewriteCond %{HTTP_REFERER} !qq.com [NC]
RewriteCond %{HTTP_REFERER} !qzone.qq.com [NC]

RewriteRule .(jpg|png|bmp|swf|jpeg)$ /ad-img/replace.gif [R,NC,L]

列表中网址请自行修改,改成符合你的需求,注意一点,一级域名和二级域名是有区别的,例如如果你添加了baidu.com而没有添加image.baidu.com,就会导致image.baidu.com搜到你的图片是防盗链的那张图片。

这部分是判断是否盗链,如果以上条件都成立(即访问图片的请求,既不是直接输入网址,也不是来自adong.info,也不是来自列表中的网站),就执行下列转向:

RewriteRule .(jpg|png|bmp|swf|jpeg)$ /ad-img/replace.gif [R,NC,L]

意思是让所有盗链adong.info网站下 jpg、png、bmp、swf、jpeg 文件的网页,显示的图片都用/ad-img/目录下的 replace.gif 图片替换掉。

在此说明一下,因为我的防盗链显示图片是采用.gif格式,而这个格式在我网站很少用到,所以我没有添加.gif进入防盗链的行列。有需要请自行添加即可。

如果是实现转向功能,就把/ad-img/replace.gif 改成你的网址就行了,如下所示:

RewriteRule .*\.(jpg|gif|png|bmp|swf|jpeg)$ http://blog.ahdong.net [NC,R,L]

说明一下其中的 R、NC 和 L

R 就是转向的意思

NC 指的是不区分大小写

L 指明本次转向到此结束,后续的转向不受先前判断语句的影响

———————————————————————————–

htaccess文件下载

http://u.115.com/file/f88ab9bdd9

———————————————————————————–

参考到的文章:

《利用.htaccess设置图片防盗链》

《DirectAdmin面板空间防盗链》

《利用meyu支持的.htaccess文件设置图片防盗链及转向》

4 评论

  1. @闲云
    我也曾想用图床来解决问题,可以加快图片的载入,减少服务器的负载,但考虑了很久,很是公用一个空间好了,存亡一起。

发表评论

电子邮件地址不会被公开。 必填项已用*标注