J'essaie d'écrire le "nec plus ultra" de l'anti hot linking .htaccess...
Vous pouvez trouver de nombreux exemples/tutoriels / générateurs sur le net mais beaucoup d'entre elles sont erronées ou incomplètes (voire les deux).
Ce sont les caractéristiques que je recherche :
- Doit bloquer la liaison à chaud pour une liste d'extensions de fichiers lorsque HTTP_REFERER est un site étranger.
- Doit permettre la création de liens dynamiques pour le domaine actuel (duh) sans le coder dans le .htaccess.
- Pour le domaine actuel, il doit fonctionner sous http et https.
- Pour le domaine actuel, il doit fonctionner avec www et sans www.
- Il doit être possible d'ajouter des domaines d'exception à ces règles (comme notre ami Google) et ces domaines doivent fonctionner sous http et https et avec www ou sans www.
Voici ce que j'ai réalisé jusqu'à présent :
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com/.*$ [NC]
RewriteRule \.(gif|jpe?g|png|zipx?)$ - [NC,F]
</IfModule>
Mes questions :
- Comment éviter le hardcode
mydomain.com
dans le fichier .htaccess ? (Ce serait formidable de pouvoir déployer ce .htaccess sur tous mes domaines sans avoir à le modifier pour chacun d'eux). - Dans ma RewriteRule,
gif|jpe?g|png|zipx?
est équivalent àgif|jpg|jpeg|png|zip|zipx
n'est-ce pas ? (Désolé, je suis encore novice en matière d'expressions régulières.) - Voyez-vous quelque chose de mauvais dans mon .htaccess dont je ne suis pas au courant ?
Pour le numéro 1, je sais que c'est possible. Ce qui s'en rapproche le plus est cet extrait qui supprime le www de l'URL sans coder en dur le domaine. Existe-t-il un moyen d'utiliser cette méthode pour répondre à ma question n° 1 ?
RewriteCond %{HTTP_HOST} ^www\.(.+)
RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+)
RewriteRule ^ http%2://%3%{REQUEST_URI} [L,R=301]
Mise à jour :
Je sais qu'il existe des solutions permettant d'afficher une image filigranée au lieu d'une image normale. Mais je ne cherche pas ce genre de solution. Je veux une universel solution (servant les erreurs 403) qui fonctionnera pour tous les types de fichiers binaires (zip, exe, iso, jpg, png, gif...).