Htaccess : sélectionner le hotlinking autorisé ?

Heartless

Nouveau WRInaute
Bonjour,

j'ai mis en place un code dans mon htaccess :
lorsqu'une personne accède à l'adresse directe d'une image, elle est aussitôt redirigée vers une page personnalisée contennant l'image en question.
Le problème, c'est que ça empêche le hotlinking et je ne désire pas le supprimer totalement.
J'aimerais en fait que l'image ne soit pas redirigée si le mot "miniatures" figure dans l'adresse, mais je ne sais pas si l'on peut faire ça en htaccess...

Voici mon code :
Code:
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^[http://(www]\.)?monsite\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^[http://(www]\.)?monsite\.com/.*$ [NC]
RewriteRule ^image/(.*)\.jpg$                     /image.php?image=image/$1.jpg [QSA,R=301,L]

Merci d 'avance à qui saura m'aider.
 

KOogar

WRInaute accro
tu dois pouvoir bloquer l'url avec une condition:

Code:
RewriteCond %{HTTP_REFERER} !+(miniature|peuimporte)

(je suis pas sur pour le + dans le code)
 

Heartless

Nouveau WRInaute
Bonsoir,

je ne veux pas bloquer l'url, je veux que si y'a "miniatures" dans l'adresse, l'image puisse être hotlinkée, mais pas si ce mot est absent.
 

KOogar

WRInaute accro
Heartless a dit:
J'aimerais en fait que l'image ne soit pas redirigée si le mot "miniatures" figure dans l'adresse

Heartless a dit:
je veux que si y'a "miniatures" dans l'adresse, l'image puisse être hotlinkée, mais pas si ce mot est absent.

separement j'arrive a comprendre, mais les 2 reunis ca fait confus
 

Heartless

Nouveau WRInaute
Désolé, ce que je veux dire, c'est que je veux empêcher le hotlinking des images de mon site, mais pas quand ce sont les miniatures, seulement les grandes. Comme les miniatures sont enregistrées dans un dossier nommé "miniatures", à chaque fois, je me suis dit que si on pouvait mettre une condition pour êmpêcher tout hotlinking, sauf quand le mot "miniatures" est dans l'adresse de l'image, ce serait bien.

Donc, pour résumer, je ne veux pas que mes images d'origine soient hotlinkée.
Je veux bien que les miniatures de ces images soient hotlinkées.

Pour info, les miniatures portent le même nom.
 

KOogar

WRInaute accro
ok, le snippet que je t'ai donner devrait faire l'affaire, donne 2 urls en exemple pour ajuster le code a tes besoins

avec et sans le mot "miniature"
 

Heartless

Nouveau WRInaute
Je dois mal m'y prendre car ça ne fonctionne pas. Je tombe sur un message d'erreur interne de serveur...

J'ai remplacé le + par un * et c'est pareil, alors je l'ai simplement retiré.

Voilà mon code :
Code:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?monsite\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?monsite\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} (miniatures)
RewriteRule ^image/(.*)\.jpg$  														/image/$1.jpg [QSA,R=301,L]
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?monsite\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?monsite\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !(miniatures)
RewriteRule ^image/(.*)\.jpg$  														/image.php?image=image/$1.jpg [QSA,R=301,L]
 

webmasterlamogere

WRInaute passionné
Si la miniature et la grande image ont le même nom tu peux renvoyer la petite avec la réécriture si le referer est différent de ton site (il faut surement adapter les urls).
Code:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?tonsite\.com.*$ [NC]
RewriteRule ^image/grande/(.*)\.jpg$ /image/miniatures/$1.jpg [L]
 

Heartless

Nouveau WRInaute
Oui mais non, là tu m'as retiré le code qui redirige les grandes vers ma page personnalisée... Je ne veux pas que les gens puissent lier directement les grandes images, c'est pourquoi j'ai fait cette redirection.

En dehors de ça, le code que tu me proposes ne fonctionne pas, je pense que c'est dû à une mauvaise adaptation, car les dossiers dans lesquels sont les images sont différents :
Voilà le code que j'ai essayé d'après celui que tu m'as proposé :
Code:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?monsite\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?monsite\.com/.*$ [NC]
RewriteRule ^images/(.*)/(.*)/(.*)\.jpg$  														/images/$1/$2/miniatures/$3.jpg [QSA,R=301,L]
ça ne fonctionne malheureusement pas.

As-tu une idée ?
 

webmasterlamogere

WRInaute passionné
tu n'as pas besoin de faire de redirection mais juste une réécriture. Le R=301 est inutile.
J'ai remplacé . par [^/] pour éviter de boucler.
Sinon ce code doit fonctionner. Il va afficher la miniature quand tu hotlink la grande.
Code:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?tonsite\.com.*$ [NC]
RewriteRule ^images/([^/]*)/([^/]*)/([^/]*)\.jpg$ /images/$1/$2/miniatures/$3.jpg [QSA,L]
 

Heartless

Nouveau WRInaute
Ok, ça fonctionne, c'set super ! :)

Concernant la redirection, c'est important quand même, je l'utilise afin de rediriger un visiteur sur une page personnalisée contenant l'image au lieu de le laisser afficher l'image seule lorsqu'il clique sur un lien menant directement à cette image.

Exemple avec un lien tel que celui-ci :
- http://www.monsite.com/img/jeu01/artworks/nom_de_l_image_01.jpg

Au lieu d'accéder directement à l'image, je voudrais qu'il soit redirigé vers une page la contenant, comme ceci :
- http://www.monsite.com/img.php?img=img/jeu01/artworks/nom_de_l_image_01.jpg

Avec mon code précédent, ça fonctionnait :
Code:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?ffshores\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?ffshores\.com/.*$ [NC]
RewriteRule ^img/(.*)\.jpg$  														/img.php?img=img/$1.jpg [QSA,R=301,L]
Seulement, ça entre en conflit avec le nouveau que tu m'as donné... :/

J'ai essayé ça :
Code:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?monsite\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?monsite\.com/.*$ [NC]
RewriteCond %{HTTP_HOST} !^http://(www\.)?monsite\.com [NC]
RewriteRule ^img/([^/]*)/([^/]*)/([^/]*)\.jpg$ /img/$1/$2/miniatures/$3.jpg [QSA,L]

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?monsite\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?monsite\.com/.*$ [NC]
RewriteCond %{HTTP_HOST} ^http://(www\.)?monsite\.com [NC]
RewriteRule ^img/(.*)\.jpg$  														/img.php?img=img/$1.jpg [QSA,R=301,L]
Mais le problème reste le même, seule la réécriture en miniature fonctionne, du coup, en arrivant en lien direct sur la grande image, c'est la miniature qui s'affiche et non pas ma page personnalisée. XD
 

webmasterlamogere

WRInaute passionné
je ne pense pas que tu puisses distinguer une image affichée sur une page et une image affichée directement.
Si pas de critère pour distinguer, c'est la première règle qui match qui est choisie par apache.
A toi de choisir celle que tu préfères.
 

Heartless

Nouveau WRInaute
Mince... Il n'y a vraiment aucune condition permettant de vérifier où se touve l'image via la barre d'adresse au moment où elle est appellée ?
 

Discussions similaires

Haut