Proteger son site web des hotlinks

Commençons par répondre à la question « Qu’est ce qu’un Hotlink ? »

C’est lorsque le webmaster d’un site web affiche une image de votre site sur son site sans l’héberger en faisant un lien direct. Le webmaster n’héberge pas l’image sur son site et ainsi il utilise votre bande passante. Quand un modérateur d’un forum avec plusieurs milliers de post fait un hotlink pour son avatar, c’est autant de hits qui vous sont comptabilisés par votre hébergeur.

De plus, les robots des moteurs de recherche ont encore du mal à identifier le site web à qui appartient l’image. Il n’est pas rare qu’il associe votre image au site web qui a fait un hotlink, et tout le trafic du moteur de recherche sur cette image revient au hotlinkeur.

La parade pour éviter ce genre de désagrément est d’utiliser le fichier .htaccess (vous devez être sous Apache). On se base sur le référant (referer) pour déterminer si le site qui souhaite afficher l’image fait partie de la liste des sites autorisés sinon on lui tape sur les doigts.

Il suffit de créer un fichier .htaccess avec le contenu ci-dessous et de placer le fichier dans le même répertoire qui contient vos images à protéger.

RewriteEngine on
RewriteOptions inherit
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?votre-site\.com(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^.*\.google\..*(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^.*search\?q=cache.*$ [NC]
RewriteCond %{HTTP_REFERER} !^.*\.yahoo\..*(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://216\.239\.(3[2-9]|[45][0-9]|6[0-3])\..*(www\.)?votre-site\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://64\.233\.(167|183)\.104.*(www\.)?votre-site\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://66\.249\.93\.104.*(www\.)?votre-site\.com [NC]
ReWriteRule .*\.(gif|png|jpe?g)$ http://www.software-ds.com/images/SoftwareDS2.jpg

Remplacez « votre-site » par le nom de vote site web sans oublier de changer l’extension com par fr si vous avez un site en .fr . La dernière ligne contient l’adresse de l’image à afficher en remplacement de celle hotlinkée. Vous pouvez afficher une image de 1×1 pixel (invisible, et économique pour la bande passante) ou une bannière de votre site web ou même une capture d’écran de votre site (pourquoi pas ?).
Le .htaccess ci-dessus autorise les images à s’afficher sur votre site, sur celui de google, sur les caches de google, sur yahoo et il ne bloquera pas l’indexation de vos images sur google images 🙂 ( Vous pouvez rajouter des moteurs de recherche comme msn par exemple, mais moi j’aime pas microsoft 🙂 ).