Version complète: sur le forum Webmaster Hub : Réécriture d'url ? encore un problème...
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
xpatval
Bonsoir,

L'url d'origine (par exemple):
CITATION
www.monsite.fr/photos_annee.php?date=2005&dep=10


L'url réécrite:
CITATION
www.monsite.fr/photos-2005-galerie-10.html


La ligne concernée dans le .htaccess:
CITATION
RewriteRule  ^photos-([0-9]+)-galerie-([0-9]+)\.html$  /photos_annee.php?date=$1&dep=$2  [L]


Bien entendu, quelque chose foire, à savoir que je récupère ceci pour la variable $date: 2005-galerie-10, et aucune valeur pour la variable $dep.

Qu'ai-je ancore mal fait ?

xpatval
TheRec
Bonsoir,

l'expression régulière est correcte... elle fonctionne sur mon serveur local ..mais j'ai déjà eu un problème similaire une fois, pour faire fonctionner la réécriture j'ai dû utiliser un anti-slash devant le & séparant les paramètres dans l'URL...
Ce qui donnerait :
CODE
RewriteRule  ^photos-([0-9]+)-galerie-([0-9]+)\.html$  /photos_annee.php?date=$1\&dep=$2  [L]

Je ne peux pas te garantir que cela fonctionnera...mais chez moi cela à fonctionné pour je ne sais quelle raison obscure !
xpatval
Je viens d'essayer ta solution, mais sans résultat en local...Merci qd même.

xpatval
TheRec
Désolé...

Cette expression régulière est correct je peux l'affirmer, elle fonctionne chez moi du moins...

Essaie de simplifier l'expression..avec un seul paramètre, puis d'ajouter le second une fois que le premier fonctionne ..par exemple :
CODE
RewriteRule  ^photos-([0-9]+)-galerie\.html$  /photos_annee.php?date=$1 [L,R=301]

Le R=301 te permet de voir l'URL finale sans avoir à afficher le contenu de $_GET...
xpatval
Bon, ne cherchons pas plus loin, j'ai la solution, ou plutôt la correction...

Ce que je n'avais pas dit était qu'il existait une autre règle, similaire:
CITATION
RewriteRule  ^photos-([0-9]+)\.html$  /photos_annee.php?date=$1  [L]
la seconde qui posait problème:
RewriteRule  ^photos-([0-9]+)-galerie-([0-9]+)\.html$  /photos_annee.php?date=$1&dep=$2  [L]

Et ça, il aime pas !!
Donc, il suffit de modifier le nom de fichier réécrit, par exemple le deuxième.
les deux règles deviennent:
CITATION
RewriteRule  ^photos-([0-9]+)\.html$  /photos_annee.php?date=$1  [L]
RewriteRule  ^photo-([0-9]+)-galerie-([0-9]+)\.html$  /photos_annee.php?date=$1&dep=$2  [L]

Ainsi, le problème se résout....

Merci à toi.

xpatval
TheRec
Bonjour,

tu peux garder la même syntaxe... mais il faut réflechir dans ce sens : La règle la plus "complexe" (restrictive) en premier.

Ainsi si la syntaxe la plus complexe ne correspond pas à la requête faite par l'utilisateur il va passer à la suivante qui est moins restrictive...et ainsi de suite.

Ta solution fonctionne, mais cela aurait aussi fonctionné en inversant l'ordre de ces deux règles, ce qui donne :
CODE
RewriteRule  ^photos-([0-9]+)-galerie-([0-9]+)\.html$  /photos_annee.php?date=$1&dep=$2  [L]
RewriteRule  ^photos-([0-9]+)\.html$  /photos_annee.php?date=$1  [L]

Ainsi tu conserves la logique de ton schéma d'URL.

Au passage, dans ce cas de figure il est bizarre que cette expression :
CODE
RewriteRule  ^photos-([0-9]+)\.html$  /photos_annee.php?date=$1  [L]

Ait pû contenir "2005-galerie-10"...car "-galerie-" ne correspond pas à la classe [0-9] wink.gif Mais je suppose que tu avais (.*) à la place smile.gif

Que ce soit une "leçon" pour ceux qui souhaitent poser une question, il vaut mieux "trop" d'informations sur le problème que pas assez... enfin ça accélère le processus de réponse si on a tout les éléments en main pour répondre wink.gif
xpatval
CITATION(TheRec @ mercredi 05 avril 2006, 09h51)
Au passage, dans ce cas de figure il est bizarre que cette expression :
CODE
RewriteRule  ^photos-([0-9]+)\.html$  /photos_annee.php?date=$1  [L]

Ait pû contenir "2005-galerie-10"...car "-galerie-" ne correspond pas à la classe [0-9] wink.gif Mais je suppose que tu avais (.*) à la place smile.gif

Non, non, pas du tout. La règle ci-dessus fonctionnait sans problème. Cela étant, je vais inverser l'ordre des règles , avec la même orthographe pour le début de fichier. C'est effectivement un "truc" dont il faut se souvenir, mais je n'ai plus qu'un seul neurone, alors, hein, doucement...

wink.gif

xpatval
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.