最近偶尔碰到网站的流量被消耗尽的情况,已经影响到自己的使用了。怀疑网站图片,数据等被盗链,导致流量被消耗。
ubuntu 16.04.3
上apache 2.4.18
防止网站图片被盗链的方法如下:
首先是在根目录下创建一个.htaccess
,如果已经有了,直接把下面的代码添加到.htaccess
尾部即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#阻止盗链 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ [NC] RewriteCond %{HTTP_REFERER} !google.com [NC] RewriteCond %{HTTP_REFERER} !baidu.com [NC] # 微软必应 RewriteCond %{HTTP_REFERER} !bing.com [NC] # 谷歌翻译 RewriteCond %{HTTP_REFERER} !translate.googleusercontent.com [NC] RewriteCond %{HTTP_REFERER} !mobibrw.com [NC] RewriteCond %{HTTP_REFERER} !miniab.com [NC] # 跳转到服务器首页 RewriteRule .*.(gif|jpg|png|zip|gz|tar|pdf)$ mobibrw.com [R,NC,L] # 服务器返回403禁止访问 # RewriteRule .*.(gif|jpg|png|zip|gz|tar|pdf)$ - [F] </IfModule> |
简单的解释下每条语句:
1 |
RewriteCond %{HTTP_REFERER} !^$ [NC] |
允许空“HTTP_REFERER
”的访问,即允许用户在浏览器地址栏中直接输入图片地址时图片文件的显示。一般而言,这是可选的,不过,建议这么设置,如果强迫必须具有“HTTP_REFERER
”才能访问,可能会带来某些问题,比如说在用户通过代理服务器访问时。
1 |
RewriteCond %{HTTP_REFERER} !google.com [NC] |
设置允许访问的HTTP
来源,包括我们的站点自身、Google
、Baidu
等。这个可以添加多条,目前我们配置只有自身还有谷歌百度等常用的搜索引擎的访问权限。
1 |
RewriteRule .*.(gif|jpg|png|zip|gz|tar|pdf)$ mobibrw.com[R,NC,L] |
定义被盗链时替代的链接,可以是图片,也可以是404
错误页,目前我们定义的是首页,所以就是mobibrw.com
,如果是要定义在404
页面,可以把404
页面的路径加上。当然替换的页面文件体积越小越好。你也可以不设置替换图片,而是使用下面的语句即可(服务器返回403
禁止访问):
1 |
RewriteRule .*\.(gif|jpg|png|zip|gz|tar|pdf)$ – [F] |