2011-10-04 42 views
1

我有一个.htaccess文件,其中包含指令以防止静态资产(图像,CSS和JavaScript文件)的热链接。相关的代码如下所示:防止生成缩略图的热链接?

RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?ipwuk.com/.*$ [NC] 
RewriteRule \.(gif|jpg|js|css|png)$ - [F,L] 

这很棒,做这项工作;不过,我有一个自动生成缩略图的PHP脚本(并且不包含URL中的文件扩展名)。样本缩略图URL看起来是这样的:

http://example.com/inc/image.php/4e7efde2ee8ac.jpg/610/343/fill

或者:

http://example.com/inc/image.php/[seed].[extension]/[宽度]/[高度]/[拇指型]

如何防止上述脚本生成的图像被热链接(我怀疑我的客户正在做什么,结果就是每天吞吐带宽超过150MB)?

+0

does ** image.php **只生成缩略图或不生成缩略图? – undone

+0

是的,'image.php'只生成缩略图。它采用如上所述的参数,加载一个'Thumbnail'类,然后根据需要生成缩略图,然后流式传输结果图像。 –

回答

1

此代码拒绝对image.php这不是直接或指定的网站的所有请求。

RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?ipwuk\.com/.*$ [NC] 
RewriteCond %{REQUEST_URI} ^/image.php(.*)$ [NC] 
RewriteRule ^(.*)$ - [F,L] 
1

难道你不能实际防止 - 编辑:沮丧 - 它在生成缩略图本身的脚本?

在伪PHP:

if (parse_url($_SERVER['HTTP_REFERER']) != "yourSite"){ 

    //generate thumbnail that says "don't hotlink, scum!" 

} 
else { 

    //do your normal thumbnail generation routine 

}