在Apache中如何使用mod_rewrite防止图片盗链

时间:2019-11-20 08:54:16  来源:igfitidea点击:

盗链是指一个网站从使用另一个网站的图片链接。 盗链也称为热链接(hot linking ),盗链占用了我的大量带宽。

如何在apache web服务器中防止热链接?

解决方案非常简单,使用Apache mod_rewrite来检查浏览器提供的引用信息来禁止图片热链接。

在Apache中如何防止图片盗链?

确保Apache mod_rewrite已启用。

方法1:防止图片“热链接”

打开httpd.conf或者.htaccess文件

# vi httpd.conf

添加以下配置指令:

SetEnvIfNoCase Referer "^http://www\.theitroad\.com/" banimages=1
SetEnvIfNoCase Referer "^http://theitroad\.com/" banimages=1
SetEnvIfNoCase Referer "^$" banimages=1
<FilesMatch "\.(gif|png|jpe?g)$">
  Order Allow,Deny
  Allow from env=banimages=1
</FilesMatch>

或者我们可以使用以下简单代码:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?theitroad.com/.*$ [NC]
RewriteRule ^.*\.(bmp|tif|gif|jpg|jpeg|jpe|png)$ - [F]

方法2:防止图片盗链,重定向到新图片

这种方法将显示我们提供的说明图片

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?theitroad\.com/.*$ [NC]
RewriteRule .*\.(gif|jpe?g|png)$ http://www.theitroad.local/noop.jpg [R,NC,L]

如果我们修改的是httpd.conf文件;则需要重新启动Apache,使设置生效:

# /etc/init.d/httpd restart