Souci d'url rewriting sur une page entre une et deux variables

PhilouMinety

Nouveau WRInaute
Bonsoir à tous.
Je fais appel à votre aide car je suis en train de me tirer les cheveux sur une ligne d'url rewriting qui ne veut pas passer sans que je comprenne pourquoi.

Voilà dans une section que j'appelle "videos", j'ai conçu une page qu'on va appeler videos.php.
Sur cette page j'ai deux critères de recherche : la catégorie vidéo et l'affichage par page.

En brut cela donne ceci
1. Affichage par catégorie :
ndd/videos/videos.php?categorie_video=categorie-verte

2. Puis par page dans la catégorie active :
ndd/videos/videos.php?categorie_video=categorie-verte&page=1

Pour le point n°1 aucun souci, ça marche en faisant ceci :

Code:
RewriteRule ^videos/([a-zA-Z0-9\-]+)\.html$   /videos/videos.php?categorie_video=$1 [L]

L'url nouvelle fonctionne sous :
ndd/videos/categorie-verte.html

Pour le point n°2 ça pose problème, j'ai rentré cette ligne :

Code:
RewriteRule ^videos/([a-zA-Z0-9\-]+)-([0-9]+)\.html$   /videos/videos.php?categorie_video=$1&page=$2 [L]

Lorsque je rentre l'url : ndd/videos/categorie-verte-1.html
J'ai bien la page qui s'affiche mais sans aucun résultat alors qu'en rentrant la page
ndd/videos/videos.php?categorie_video=categorie-verte&page=1
j'ai bien ma catégorie affichée avec les vidéos correspondantes dans la page 1, si je mets 2 j'ai la page 2...

J'ai enlevé la première ligne du htaccess

Code:
RewriteRule ^videos/([a-zA-Z0-9\-]+)\.html$   /videos/videos.php?categorie_video=$1 [L]

et la page n°2 fonctionne maintenant mais du coup la n°1 ne marche plus.
J'ai donc un conflit entre mes deux lignes... mais où ?

C'est comme si je perds ma variable catégorie dans l'url rewriting.
Merci d'avance.
 

Giustino

WRInaute discret
Ton problème est logique.
Le moteur de réécriture match "categorie-verte-1" dans les 2 cas:

Code:
RewriteRule ^videos/([a-zA-Z0-9\-]+)\.html$   /videos/videos.php?categorie_video=$1 [L]
Dans ce cas-ci, c'est non désiré ! Il va pourtant l'interpréter: /videos/videos.php?categorie_video=categorie-verte-1
En effet, ta regex [a-zA-Z0-9\-]+ match bien "categorie-verte-1"

Code:
RewriteRule ^videos/([a-zA-Z0-9\-]+)-([0-9]+)\.html$   /videos/videos.php?categorie_video=$1&page=$2 [L]
Dans ce cas-ci, il va l'interpréter également à juste titre: /videos/videos.php?categorie_video=categorie-verte&page=1

Pour résoudre ton problème, tu dois simplement placer ta règle numéro 2 (avec le "page") avant ta règle numéro 1.
De ce fait, tu n'auras plus ce soucis d'interprétation non désirée.
 

PhilouMinety

Nouveau WRInaute
Salut et merci beaucoup Giustino pour ta réponse qui m'a fort bien aidé !
A la lecture de ton post, effectivement c'est logique. J'avoue que j'étais un peu à côté sur ce coup là.
J'ai testé et ça marche ! Merci pour ton explication claire et la rapidité de la réponse.
 

Discussions similaires

Haut