Définition
Le lien direct (hotlinking) consiste à lier une image d'un site web depuis un article d'un autre site web. Cela peut être une pratique très utile. Ce site utilise de nombreuses images qui sont en réalité hébergées sur le site docs.joomla.org. Cela permet d'économiser le temps et les efforts nécessaires à la création de captures d'écran ainsi que la bande passante de ce site. Cependant, il peut y avoir des problèmes de droits d'auteur et vous pourriez vouloir empêcher que vos images soient utilisées de cette manière.
La méthode décrite ici utilise un fichier .htaccess, qui est une fonctionnalité du serveur Apache. D'autres serveurs web peuvent proposer d'autres méthodes pour empêcher le lien direct.
Instructions
Placez le code suivant dans le fichier .htaccess de votre répertoire racine.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp|svg)$ - [NC,F,L]
</IfModule>
Explication
- Le premier RewriteCond autorise les requêtes directes utilisant une URL - sans référent.
- Le deuxième RewriteCond autorise les requêtes provenant de votre propre domaine. Le drapeau [NC] signifie No Case, c'est-à-dire qu'il correspond aussi bien aux majuscules qu'aux minuscules.
- Le troisième RewriteCond autorise les requêtes provenant de Google, afin que vos images puissent toujours apparaître dans les résultats de recherche. Vous pouvez ajouter des lignes similaires pour tout autre site que vous souhaitez autoriser.
- Le RewriteRule bloque les requêtes de fichiers images provenant de tous les domaines non préalablement autorisés. Le drapeau F indique au navigateur de renvoyer un en-tête Forbidden (403). L signifie Last rule (dernière règle).
Bloquer le lien direct depuis des domaines spécifiques
Pour empêcher le lien direct uniquement depuis des domaines spécifiques, tels que myspace.com, blogspot.com et livejournal.com, tout en autorisant d'autres sites web à faire des liens directs vers vos images, utilisez le code suivant :
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http(s)?://(.+\.)?myspace\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http(s)?://(.+\.)?blogspot\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http(s)?://(.+\.)?livejournal\.com/ [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp|svg)$ - [NC,F,L]
</IfModule>
Vous pouvez ajouter autant de domaines différents que vous le souhaitez. Chaque ligne RewriteCond, à l'exception de la dernière, doit se terminer par les drapeaux [NC,OR]. NC signifie d'ignorer la casse. OR signifie "Or Next", c'est-à-dire qu'il faut faire correspondre cette ligne ou la ligne suivante. Le dernier RewriteCond omet le drapeau OR pour arrêter la correspondance après ce dernier.