Problème d'URL Rewriting pour des images

WRInaute discret
Bonjour à tous,

Je suis encore relativement débutant en URL Rewriting et je n'arrive pas à résoudre ce problème.

Mon but est de changer l'URL :
http://www.jamesbond-fr.com/filmographie/photos/thumbs/image_m.jpg
en
http://www.jamesbond-fr.com/filmographie/photo/thumbs/image_m.jpg

Pour le moment j'utilise cette règle de réécriture mais ça ne marche pas. J'ai une erreur 404 parce que ça dit que l'image filmographie/photo/thumbs/image_m.jpg est introuvable (normal c'est la règle que j'essai de mettre en place).
Code:
RewriteRule ^filmographie/photo/(.*)/thumbs/(.*)$ filmographie/photos/$1/thumbs/$2 [L]

Si vous voyez où se situe le problème :roll:

Merci d'avance !

PS : La différence se situe au niveau du dossier photos/ que je cherche à transformer en photo/.
Comme ça ça à l'air bête de faire ça mais là j'ai simplifié un peu la chose.
 
WRInaute discret
euh question con : pk tu te fais chier a faire de l'UR alors que tu pourrais simplement renommé le dossier avec ton client FTP ?
 
WRInaute discret
Bon ba je vais tout expliquer de A à Z alors :lol: (d'ailleurs peut-être qu'il y a une solution plus simple)

Préambule
Si je met des URL qui sont des URL spécifiques à mon site ce n'est pas pour faire de la pub mais pour pouvoir expliquer ça d'une façon claire parce qu'il va falloir s'accrocher :lol:

L'Objectif dans notre cas
Le but est de mettre en URL Rewriting un script d'album photo en PHP pour que les images soient référencées par GoogleImage.

Fonctionnement du script au départ
Le script est installé à cette adresse : http://www.jamesbond-fr.com/filmographie/photos/
Les photos sont stockés dans photos/Album/image.jpg, les miniatures dans photos/Album/thumbs/image_m.jpg.
Lorsqu'on ouvre un album on clique sur l'URL : photos/browser.php?directory=Album.
Lorsqu'on visualise une image on va sur l'URL : photos/window.php?img_name=Album/image.jpg&img_w=650&img_h=433 (si image.jpg fait 650x433).

Fonctionnement du script en utilisant l'URL Rewriting
- Sommaire des albums : photos/ (ça ça ne change change pas)
- Ouverture d'un album : photos/Album
Règle utilisée :
Code:
RewriteRule ^photos/([-0-9A-z]+)$ /filmographie/photos/browser.php?directory=$1 [NC,L]
Le problème qui se pose : il semblerait que la règle ne marche pas comme il faut puisque je suis renvoyé dans le dossier photos/Album réel, là où il y a une page index.php qui me dit que je n'ai pas à accéder à ce dossier.

Solution possible à ce problème
Changer légèrement le nom de l'album.
Exemple :
Code:
RewriteRule ^photos/([-0-9a-z]+)-$ /filmographie/photos/browser.php?directory=$1 [NC,L]
Ce qui donnerais donc : photos/Album-

Ou alors pour garder le nom originel de l'album :
Code:
RewriteRule ^filmographie/photo/([-0-9A-z]+)$ /filmographie/photos/browser.php?directory=$1 [L,NC]
Ce qui revient à renommer le dossier photos/ en photo/
Ce cas marche mais toutes les miniatures qui sont affichés dans l'album ne marche plus (voir donc plus haut). Et c'est là que je bute.

J'espère que c'était à peu près compréhensible :roll:
 
WRInaute occasionnel
Il va te falloir modifier les scripts PHP aussi, non ? Car c'est, par exemple, browser.php qui construit la page avec les liens vers les images, or celui-ci affichera obligatoirement l'URL au format windows.php?img_name... et non l'URL que tu veux passer à la moulinette rewrite.
 
WRInaute discret
Oui mais ça c'est pas très compliqué. :roll:

@squawk : J'ai fait au plus simple désolé. Mais à la limite c'est pas très grave puisque mon 2e message était pour expliquer pourquoi est-ce que je voulais avoir photo/ à la place de photos/.
 
WRInaute occasionnel
Pourtant ça, ça devrait fonctionner :
Code:
RewriteRule ^/?photos/([^/]+)$   /filmographie/photos/browser.php?directory=$1 [NC,L]

Ceci dit, ça ne marchera pas d'entrée de jeu avec tes répertoires qui ont des espaces, puisque tu devrais les remplacer par des %20 pour avoir une URL valide. Peut-etre que ton problème vient de ces répertoires ?

Sinon, si tu as moyen, essaye de remplacer le [NC,L] par [NC,R] le temps de voir l'URL ré-écrite
 
WRInaute discret
ChezThierry a dit:
Pourtant ça, ça devrait fonctionner :
Code:
RewriteRule ^/?photos/([^/]+)$   /filmographie/photos/browser.php?directory=$1 [NC,L]

Ceci dit, ça ne marchera pas d'entrée de jeu avec tes répertoires qui ont des espaces, puisque tu devrais les remplacer par des %20 pour avoir une URL valide. Peut-etre que ton problème vient de ces répertoires ?

Sinon, si tu as moyen, essaye de remplacer le [NC,L] par [NC,R] le temps de voir l'URL ré-écrite

Merci pour ta réponse déjà :wink:

2 questions (surement très bêtes) :
- Pourquoi tu met un ? devant photos/
- J'ai jamais compris à quoi correspondait ces balises en fin de règle. Donc c'est quoi la différence entre [NC,L] et [NC,R] ?

Une autre interrogation :
Code:
RewriteRule ^/?photos/([^/]+)$   /filmographie/photos/browser.php?directory=$1 [NC,L]
Ca sous-entend que je met mon .htaccess dans filmographie/ ou dans photos/ ?

Si c'est dans photos/ ça me pose un problème parce que mon script de photo reconnait ce fichier comme un dossier et m'affiche une erreur (même si dans le code php ça doit être résolvable, si il existe une solution plus simple grace à l'URL Rewriting je préfère).

Tous mes tests je les ai fait sur un dossier qui n'avait pas d'espace, juste une majuscule au début. Je pense pas que ce soit très compliqué de mettre des tirets à la place des espaces par la suite.

Maintenant je vais aller tester ton bout de code :wink: :D

EDIT : Ca ne marche pas (même en enlevant le ?) :cry:
 
WRInaute occasionnel
CrazyCow007 a dit:
Merci pour ta réponse déjà :wink:

2 questions (surement très bêtes) :
- Pourquoi tu met un ? devant photos/
- J'ai jamais compris à quoi correspondait ces balises en fin de règle. Donc c'est quoi la différence entre [NC,L] et [NC,R] ?

- Bah je commence par /? parce que j'ai remarqué que le / initial n'apparaissait pas toujours dans les règles de rewrite, alors par habitude je le met toujours au conditionnel (/? match un / ou rien)

- NC veut dire NoCase : pas de test sur les majuscules/minuscules, donc PHOTOS et photos match pareil
- L et R sont deux types de ré-ecriture, avec L, c'est fait en local, le navigateur client ne voit pas la différence. Avec R, c'est une redirection, le navigateur de l'utilisateur reçoit donc la nouvelle URL remaniée et tu la vois apparaitre dans la barre d'adresse de ton navigateur comme si tu l'avais tapée, ça permet de vérifier ce qu'a faire le .htaccess

Quant à l'emplacement du .htaccess, je le mettrais à la racine, pas dans photos/

Maintenant, tu me dis que ça ne fonctionne pas, faudrait voir avec ce que le NC,R retourne, voir si l'URL a bien été modifiée, parce que sur mes essais rapides chez moi, ça fonctionne, je transforme bien /photos/truc par /filmographie/photos/brower.php?directory=truc
 
WRInaute discret
C'est donc hyper pratique [R] :D

Moi qui justement me cassait la tête a essayer de voir si l'URL renvoyé était bonne.
Je teste tout ça et je te redis ;)
 
WRInaute discret
Avec la balise [R] ça me renvoit http://www.jamesbond-fr.com/filmographie/photos/browser.php?directory=Goldeneye et donc ça marche :D

Par contre en [L] ça me donne http://www.jamesbond-fr.com/filmographie/photos/Goldeneye/?directory=Goldeneye

Voilà mon .htaccess (qui est placé dans filmographie/photos) :

Code:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([-0-9a-z]+)$ /filmographie/photos/browser.php?directory=$1 [NC,L]
 
WRInaute occasionnel
Bon, après vérification, j'ai dit une c*nnerie plus grosse que moi... le [R] fait bien ce que j'ai dit, mais le [L] signifie : Last, pour éviter de faire une substitution quand celle-là a été appliquée.

Tu devrais donc garder [NC,L], mais si tu veux tester avec le [R], faudra faire [NC,R,L]

Essaye donc la ligne exacte suivante :
RewriteRule ^/?photos/([^/]+)$ /filmographie/photos/browser.php?directory=$1 [NC,L,R]

Juste pour voir...

et donc une url du type h**p://www.tonsite.com/photos/GoldenEye

ça, chez moi en local sur xampp ça fonctionne nickel
PS: et toutes mes excuses pour le [L], j'étais persuadé que ça signifiait Local et non Last. M'a fallu replonger dans la doc pour m'en rendre compte.
 
Discussions similaires
Haut