xpatval Posté 4 Avril 2006 Partager Posté 4 Avril 2006 Bonsoir, L'url d'origine (par exemple): www.monsite.fr/photos_annee.php?date=2005&dep=10 L'url réécrite: www.monsite.fr/photos-2005-galerie-10.html La ligne concernée dans le .htaccess: 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
TheRec Posté 4 Avril 2006 Partager Posté 4 Avril 2006 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 : 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 ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
xpatval Posté 4 Avril 2006 Auteur Partager Posté 4 Avril 2006 Je viens d'essayer ta solution, mais sans résultat en local...Merci qd même. xpatval Lien vers le commentaire Partager sur d’autres sites More sharing options...
TheRec Posté 4 Avril 2006 Partager Posté 4 Avril 2006 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 : 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... Lien vers le commentaire Partager sur d’autres sites More sharing options...
xpatval Posté 4 Avril 2006 Auteur Partager Posté 4 Avril 2006 (modifié) 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: 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: 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 Modifié 4 Avril 2006 par xpatval Lien vers le commentaire Partager sur d’autres sites More sharing options...
TheRec Posté 5 Avril 2006 Partager Posté 5 Avril 2006 (modifié) 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 : 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 : 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] Mais je suppose que tu avais (.*) à la place 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 Modifié 5 Avril 2006 par TheRec Lien vers le commentaire Partager sur d’autres sites More sharing options...
xpatval Posté 5 Avril 2006 Auteur Partager Posté 5 Avril 2006 Au passage, dans ce cas de figure il est bizarre que cette expression : 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] Mais je suppose que tu avais (.*) à la place 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... xpatval Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant