Schémas identiques, variables $2 et $_GET différents

Nouveau WRInaute
Bien le bonjour ! :)

J'essaie de me mettre gentiment à la réécriture d'url (j'ai lu le "guide complet" et quelques articles à droite à gauche) mais n'arrive pas à comprendre la "logique" dans le cas suivant :

Il y a 2 url type sur mon site :
Code:
index.php?page=realisations&projet=nomProjet
(Cette url ouvre une page avec les détails d'un projet en particulier)
Code:
index.php?page=realisations&filtre=luxe
(Cette page ouvre un listing des projets de type "luxe", le filtre ayant été cliqué/sélectionné via un lien/bouton sur la page correspondant à index.php?page=realisations)

Dans mon fichier .php, j'ai, pour récupérer les différentes variables du site :

PHP:
$page = $_GET["page"];
$projet = $_GET["projet"];
$filtre = $_GET["filtre"];

Je ne sais pas comment faire pour que :
Code:
index.php?page=realisations&projet=nomProjet
devienne
Code:
/realisations/nomProjet/

mais que celle ci-dessous fonctionne également :
Code:
index.php?page=realisations&filtre=luxe
devienne
Code:
/realisations/filtre/

Si je mets les deux lignes l'une en dessous de l'autre :

Code:
RewriteRule ^([a-zA-Z0-9\-_]+)/([a-zA-Z0-9\-_]+)\/$ /index.php?page=$1&projet=$2 [L]
RewriteRule ^([a-zA-Z0-9\-_]+)/([a-zA-Z0-9\-_]+)\/$ /index.php?page=$1&filtre=$2 [L]

seule la 1ère est prise en compte

Je ne sais pas si c'est très clair (j'peux vous faire un schéma si besoin), j'ai essayé de chercher à droite à gauche mais je bloque :confused:

Merci de votre aide.
 
WRInaute passionné
C'est pas possible, parce que le deuxième niveau /realisations/{type_ou_nom_de_projet}/ ne peut pas correspondre à deux urls, tu ne sais pas si c'est un type de projet ou un nom de projet, il faut choisir...
Ou alors tu fais ça en PHP, en cherchant d'abord si la variable $projet correspond en fait à un type, et si ça n'existe pas comme type de projet, c'est que c'est un nom de projet.
Sinon repenser l'url, par exemple /realisations/filtre/{type}/ ou /realisations/filtre-{type}/ bref un truc distinctif, si ça commence par "filtre-" là tu peux lui donner une réécriture d'url différente.
 
Nouveau WRInaute
Tout d'abord, merci pour ta réponse :)

En fait, initialement, je ne souhaitais pas spécialement que l'url d'UN projet (/realisations/{nom-projet}/) soit du même "niveau" (en terme de "structure" d'url) que l'affichage, avec un filtre, DES projets (/realisations/{filtre}/).

A la base, dans ma tête, ça ressemblait à :

- Lors de l'affichage de la liste des projets : /realisations/
- Lors de l'affichage de la liste des projets, avec un filtre actif : /realisations/{type}/
- Lors de l'affichage d'un projet on aurait : /realisations/{type}/{nom-projet}

Mais là où est le vrai problème, c'est que dans la liste des filtres, j'ai un "Tous" (en plus de "Luxe" et d'autres), et, concrètement, l'url /realisations/tous/ revient à la même chose que /realisations/ (alors qu'on a pas ce problème pour le filtre "luxe" qui donne /realisations/luxe/, car du coup, le contenu de la page n'est pas le même). Et qu'en plus du doublon de contenu, le "tous" m'était inesthétique.

Après, au moment où j'écris cette réponse, je me pose une autre question : n'est-ce pas envisageable de :
1- Faire une redirection permanente de /realisations/tous/ vers /realisations/
2- Garder la réécriture d'url, pour les filtres, sous la forme : /realisations/{type}/
3- Passer à une réécriture d'url, pour les projets, sous la forme : /realisations/{type}/{nom-projet}/

En gros, si le point 1 (la redirection du "tous") est faisable, partir sur UNE réécriture générale à 3 variables :

Code:
RewriteRule ^([a-zA-Z0-9\-_]+)/([a-zA-Z0-9\-_]+)/([a-zA-Z0-9\-_]+)\/$ /index.php?page=$1&filtre=$2&projet=$3 [L]

Si tout ça n'est pas possible, ta première proposition semble sympathique :

Ou alors tu fais ça en PHP, en cherchant d'abord si la variable $projet correspond en fait à un type, et si ça n'existe pas comme type de projet, c'est que c'est un nom de projet.

:D

PS : Désolé encore une fois si mes explications/la forme est un peu "brut" :confused:
 
Nouveau WRInaute
Bon bon bon... 'faut que j'aille dormir... j'ai fait simple :

les liens de mes filtres "tous" et "luxe" pointent respectivement sur /realisations/ et /realisations/luxe/. Les projets affichés sur la page /realisations/ pointent vers realisations/{type}/{nom-projets}/

Pas eu b'soin de /tous/, de redirection ou de se compliquer la vie pour rien en fait...

Désolé, c'était un faux problème... J'ai tout de même appris que :

C'est pas possible, parce que le deuxième niveau /realisations/{type_ou_nom_de_projet}/ ne peut pas correspondre à deux url, tu ne sais pas si c'est un type de projet ou un nom de projet, il faut choisir...

Et c'est bien dommage, on devrait pouvoir mettre des lignes à la suite des autres, dans le .htaccess, du style :

Code:
RewriteRule ^([a-zA-Z0-9\-_]+)/([a-zA-Z0-9\-_]+)\/$ /index.php?var01=$1&var02=$2 [L]
RewriteRule ^([a-zA-Z0-9\-_]+)/([a-zA-Z0-9\-_]+)\/$ /index.php?var01=$1&var03=$2 [L]
RewriteRule ^([a-zA-Z0-9\-_]+)/([a-zA-Z0-9\-_]+)\/$ /index.php?var01=$1&var04=$2 [L]
etc...

Merci toutefois pour l'échange, ça a trié le caca que j'avais dans la tête... :rolleyes:

PS : Je ne peux plus éditer le titre du sujet pour mettre "résolu", comment qu'on fait ? :oops:
 
Dernière édition:
Discussions similaires
Haut