HostMonster:.htaccess防盗链
出自美国主机知识库
如何阻止偷窃带宽的行为?使用mod重写引擎和.htaccess
由于无知和那种想要做什么就做什么的态度的存在,很多人从您的服务器上盗链图片到自己的页面上。这种盗链会给您的服务器带来大量负载,并且会招致您的带宽费用额外增加。
我如何阻止这种偷窃行为?
Apache服务器的Mod重写引擎(必须编译到你的服务器)可以检查向服务器请求一种特殊文件类型的文档名字。您可以按照以下的步骤来定义该逻辑:
如果请求图像文件的页面url是被允许的,显示该图像,否则,返回一个损坏的图像。
该逻辑或规则存放在您的图像文件的目录里。
这种办法完美吗?
答案是否。为了让这种方法有效,请求页面的浏览器必须返回页面url,或者称为HTTP_REFERER的东西。并且由于测试文件请求所带来的额外花费,还会导致服务器性能下降。
当盗链问题关系到您的利害,就要使用这种方法了。稍许的容忍或者给其他站点的站长发一封文雅的e-mail也是解决的办法。我通过这种方法还交到了一些朋友。
那么我确切应该怎么做呢?
第一步:确保您的服务器开启了Mod重写(已经开启)。
第二步:要有序不紊!尝试将所有图片文件放入一个目录,不要和HTML文件放在一起。每一个包含图片的目录都应该有一个空的index.html文件,防止有人看到你的目录列表。
第三步:在包含您的图片的目录的其中一个创建或编辑一个.htaccess文件。我建议先从一个目录开始,这样可以测试规则。而且如果造成了服务器配置出现错误,可以快速找出错误的行或重命名文件。.htaccess文件包含下面几行:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://domain.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.domain.com/.*$ [NC]
RewriteRule .*.gif$ - [L]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://domain.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.domain.com/.*$ [NC]
RewriteRule .*.jpg$ - [L]
注释:当复制和粘贴时,确保每一个RewriteCond是一行。页面显示里的Line Wrapping会破坏行的完整性。
将域名xxx.com换成你自己的域名的名字。要使用www和简单的域名名称,这样访问您的站点的人才不会错过图片。
第四步:测试!在另一个服务器创建一个页面,插入一个指向被保护目录里的图像的图像标签。如果您获得了一个损坏的图标,那成功了。该请求仍会出现在你的日志里,但是带宽被保护了。
诸如.MIDI的文件(音乐文件),会返回一个禁止错误。