Apache使用mod_rewrite howto防止图像的热链接或渗出

时间:2020-01-09 10:37:10  来源:igfitidea点击:

问:我的网站上有很多不错的图像,以及其他网站从我自己的站点到我的图像的热链接。
热链接正在消耗我的大量带宽。
如何停止Lechers或防止在Apache Web服务器下进行热链接?
答:这是您可能会遇到的问题,特别是如果您的站点托管唯一的图像。
但是,解决方案非常简单,即禁止使用Apache mod_rewrite来检查浏览器提供的引用信息来进行图像热链接。

如何防止Apache热链接图像/媒体?

有很多方法可以阻止图像的热链接。

您可以将以下任何代码添加到.htaccess文件或您自己的httpd.conf文件中,以防止出现这种情况。

确保已启用Apache mod_rewrite。

解决方案1:防止图像的热链接

使用vi文本编辑器打开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.local/.*$ [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]

除非图像显示在theitroad.local上,否则浏览者将看到图像noop.jpg。
替换域theitroad.local并将noop.jpg上载到webroot。

如果您对httpd.conf文件进行了更改;重新启动Apache:

# /etc/init.d/httpd restart