2010-10-22 74 views
0

CSS我建立了我的htaccess的这种方式来阻止盗链:防止盗链经由的.htaccess

的RewriteCond%{HTTP_REFERER}^HTTP://(。+)mydomain.com/ [NC ]
RewriteCond%{HTTP_REFERER}!^ $
RewriteRule。*。(bmp | dtd | flv | jpeg | jpg | gif | png | psd | swf | tif | txt | mov | mpeg | mp3 | xml)$ - [F,NC,L]

的问题是,它的工作原理完全正常经由HTML(诸如< IMG>标记),但它并不能防止通过CSS盗链(例如,背景图像URL)

因此,这里是什么我的意思是澄清:

服务器A(我的域名)
服务器B(另一个域)

服务器主机文件/myfile.jpg
服务器B主机的css文件/ mycss .css

服务器B的CSS文件包含background-image:url('server-A/myfile.jpg');这个CSS规则可以工作......它从服务器A加载jpg文件。如果服务器B也有一个< img src =“server-A/myfile.jpg”>,它不会加载。它只适用于CSS。它不应该为任何工作。

+0

所以,你知道,有些浏览器不会发送HTTP_REFERER,合法用户最终会看到破碎的图像。除非你有一个非常严重的热链接问题,否则你可能不应该打扰。 – meagar 2010-10-22 18:02:10

回答

0

当你说“不防止通过CSS进行盗链”时,你的意思是1)其他人仍然可以使用你现有的CSS文件和他们的页面,或者2)其他人可以把你的图片放在他们自己的CSS文件中?

如果1)可能是图像抓取的引用标头是CSS文件本身,它将来自您的服务器,所以会失败第一个RewriteCond规则,并且抓取不会被阻止。

+0

对不起,我将编辑主要文本以进行澄清。 – JakeTheSnake 2010-10-22 17:55:05