url rewriting pour fichier image (ou autre...) ?

WRInaute passionné
Bonjour à tous,

Voilà, mon but est de réussir à gérer une galerie d'images avec des interfaces dans plusieurs langues.

On sait que les pages ne contenant que des images sont plus difficiles à référencer que les autres.

Néanmoins, j'ai pu constaté que correctement construite, on peut bien s'en sortir.
Un des points importants est le nom du fichier image qui sera idéalement de la forme : mot-cles.jpg.

Pour en venir à mon problème, je souhaiterai savoir si il est possible de "maquiller" le nom d'un fichier comme on le fait avec une url (et s'en est une si on veut !).

En fait, que "keyword.jpg" et "mot-cles.jpg" soient un seul et même fichier.

Si oui, est-ce que les fonctions habituelles permettant de traiter des images ne risquent pas de recontrer des problèmes avec cette url virtuelle ?

Fab
 
WRInaute occasionnel
quels fonctions? et comment elle accèdent aux fichier.
je ne crois pas en général, qu'il'y 'aurait de poblème pour ces fonctions.
 
WRInaute passionné
Je pensais à des fonctions telles que file_exists(), getimagesize()... mais c'est vrai qu'au moins en théorie ça devrait passer...

Dès que j'aurai un peu plus de temps, je ferai des tests sur un site qui existe déjà et je viendrai poster ici les résultats.

Fab
 
WRInaute passionné
Voilà j'ai fait des tests avec une règle de réécriture de cette forme :

Code:
RewriteRule images/l/(.*)_([0-9]*)-([0-9]*).jpg images/l/$2-$3.jpg  [L]

L'image s'affiche correctement avec sa nouvelle adresse mais il n'y a pas moyen d'utiliser des fonctions telles que file_exists() ou getimagesize() qui sont utilisées pour créer des miniatures en php.

Du coup, j'hésite à utiliser cette méthode puisque google génère lui-même des miniatures pour son moteur d'images.
Et comme je ne sais pas quelle technologie il utilise, j'ai peur qu'il n'arrive pas à trouver l'image source...

Fab
 
WRInaute discret
Logiquement google télécharge l'image à laquelle il accede comme tout internaute ^^ Ensuite il fait ce qu'il veut avec :D

Enfin rien de vérifié là dedans, mais ca me semble logique :)
 
WRInaute occasionnel
sauf que ton getimagesize() ne doit pas être fait sur l'URL rewritée mais sur l'image source réelle locale, donc sans http:...
et dans ce cas ça marche.
Google et autres moteurs n'utilisent pas cette fonction, ils téléchargent l'image et la retraitent localement pour l'archiver sous forme de vignette.
 
WRInaute passionné
Digit a dit:
Google et autres moteurs n'utilisent pas cette fonction, ils téléchargent l'image et la retraitent localement pour l'archiver sous forme de vignette.

Je suis bien d'accord mais ce "téléchargement" ne se fait pas manuellement mais via des scripts qui vont de baser sur l'url visible de mon image (celle de sa propriété "src" que j'ai maquillée) qui ne sera pas son url réelle.

Peut-être que ça marche quand même. En fait, c'est difficile à définir faute de connaître le script de google ou d'avoir un retour d'expérience.

Je vais peut-être prendre le risque sur un site "perso" et voir ce que ça donne.

Fab
 
WRInaute occasionnel
Que ce soit par un script ou non, il n'y a pas de problème à faire du rewriting pour une image, et de lui donner 100 noms différents si ça te chante.
Google pourra les télécharger et en faire des vignettes. A partir du moment ou l'adresse de l'image fait tomber un 200 OK, et que le header est bel et bien celui d'une image, il n'y a pas de problème...
 
WRInaute occasionnel
Fab le Fou a dit:
... mais il n'y a pas moyen d'utiliser des fonctions telles que file_exists() ou getimagesize() qui sont utilisées pour créer des miniatures en php...

voici la réponse:
Le support des URL a été ajouté en PHP 4.0.5. getimagesize avec une URL
<?php
$size = getimagesize("http://www.example.com/gifs/logo.gif");
// Si le nom du fichier comporte des espaces, encodez-le !
$size = getimagesize("http://www.example.com/gifs/lo%20go.gif");
?>
 
WRInaute passionné
nodom a dit:
Le support des URL a été ajouté en PHP 4.0.5. getimagesize avec une URL
<?php
$size = getimagesize("http://www.example.com/gifs/logo.gif");
// Si le nom du fichier comporte des espaces, encodez-le !
$size = getimagesize("http://www.example.com/gifs/lo%20go.gif");
?>

Ok, effectivement mon problème venait manifestement du fait que je faisais mes tests en local (avec des urls : -http://localhost/...).

Donc, pour mon problème de départ, il n'y a pas de soucis à donner plusieurs noms différents au même fichier image, de manière à s'adapter à la langue de l'interface. :D

A+, Fab
 
Discussions similaires
Haut