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