🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
配置httpd防盗链可以用SetEnvIfNoCase和rewrite实现反盗链(Anti-Leech) 一、根据refer,注意放行自己的网址 HTTP_REFERER非本网站禁止访问图片 ~~~ RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://jb51.net/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://jb51.net$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.jb51.net/.*$ [NC] RewriteRule .*\.(gif|jpg|swf)$ http://www.jb51.net/about/nolink.png [R,NC] ~~~ 或者,**推荐**使用这一种 ~~~ SetEnvIfNoCase Referer "^http://.*\.sunnysky\.com" local_ref SetEnvIfNoCase Referer ".*\.byqk\.com" local_ref SetEnvIfNoCase Referer "^$" local_ref <filesmatch "\.(png|txt|doc|mp3|zip|rar|jpg|gif)"> Order Allow,Deny Allow from env=local_ref </filesmatch> ~~~ 二、防盗链,使用Cookie 传统的防盗链都是通过Referer来判断用户来路的,不过这样的方法对于下载工具来说形同虚设,因为现在的下载工具早就能伪造Referer了。 现在一些流行的防盗链的方式都是用在浏览页面的时候产生一个随机验证码,在用户点击连接的时候服务器会验证这个验证码是否有效从而决定是否允许下载。或者就是用某些方法把文件实际地址进行伪装。不过我觉得这些都不怎么好用,我用了一个简单有效的方式来实现防盗链。 其实就是用Cookie,配合Apache的URL Rewrite模块很简单的就能实现防盗链下载。 首先在浏览页面的时候,会向客户端发送一个特别的Cookie,例如“Site=LeiDown.Com“,盗链而来的将没有这个Cookie。 #LoadModule rewrite_module modules/mod_rewrite.so 把它前面的#去掉,再找到<Directory />块,在里面加入类似如下代码: ~~~ <Directory /> RewriteEngine On # 启动URL Rewrite引擎 RewriteCond %{HTTP_COOKIE} !^.*(?:Site=LeiDown.Com).*$ # 对于Cookie里面没有特殊记录的请求进行重定向 RewriteRule ^.*$ error.html # 将非法访问重定向到错误页面 </Directory> ~~~ 这样如果一个盗链而来的请求将会因为没有特殊Cookie而被重定向到错误页面,就算实际地址暴露也不怕。至于这个Cookie的内容是什么以及有效时间完全可以由管理员自己来设定,也就是说下载工具也没法伪造,从而防止了服务器资源被盗链的危险。