rewriting d'un nombre en chaine de caractère

oliwood

Nouveau WRInaute
Bonjour à tous !

Merci pour votre site et tout les exemples expliquant les techniques du rewriting 8)
Donc, en suivant ces exemples j'arrive effectivement à faire 2-3 trucs.
Mais j'ai un problème lorsque je tente de rewriter un id de catégorie (nombre) en chaine de caratères... j'ai bien trouvé des questions similaires sur le forum, mais rien à faire :cry:

Alors sur mon site mes liens étaient comme ça :
categories.php?id=47

que j'ai modifié en :
maison-jardin.html

Dans mon htaccess, si je fais le rewriting en dur ça marche :
RewriteRule ^maison-jardin\.html$ http://www.monsite.com/categories.php?id=47 [L]

Mais comment faire une règle qui marche pour toutes les catégories ?

Dans le forum j'ai trouvé des posts similaires et j'essaie des trucs comme ça :
RewriteRule ^(.*)\.html$ http://www.monsite.com/categories.php?id=$1 [L]

Il m'ouvre bien la page catégorie, mais forcément comme l'id n'est spécifié nulle part, les données liées à la catégorie ne s'affichent pas :cry:

Mercid e votre aide
Olivier
 

jeroen

WRInaute passionné
Salut, si tu n'a pas d'ID dans ton url, tu ne peux pas !

Une solution serait de faire ça :
RewriteRule ^(.*)\.html$ categories.php?cat=$1 [L]
et dans la page categories.php tu faut matcher le contenu de ta base de donnée pour récupérer l'ID ;o)



PS: il ne faut pas mettre http://... dans la deuxième partie de le rewriterule, sinon le serveur renvoie une redirection (302 il me semble)
 

oliwood

Nouveau WRInaute
Merci de ta réponse rapide !
Tu dis "matcher le contenu de ta base de donnée pour récupérer l'ID" ?

En me basant par exemple sur l'url, donc parser l'url, récupérer le nom de la catégorie et la comparer avec ma bdd pour récupérer l'ID ?
Mais dans ce cas, mon rewriting ne me sert plus à rien ??
 

jeroen

WRInaute passionné
oliwood a dit:
Merci de ta réponse rapide !
Tu dis "matcher le contenu de ta base de donnée pour récupérer l'ID" ?

En me basant par exemple sur l'url, donc parser l'url, récupérer le nom de la catégorie et la comparer avec ma bdd pour récupérer l'ID ?
Mais dans ce cas, mon rewriting ne me sert plus à rien ??

si si, ton rewriterule te sert à récupérer la variable $_GET[cat] à matcher
 

oliwood

Nouveau WRInaute
Je suis désolé, mais je comprends plus trop là...
Pour pouvoir récupérer l'id, il faut que je le passe dans mon url
Dans mon cas, sur ma page index j'ai transformé mon url de :
categories.php?id=47
en
maison-jardin.html

Du-coup, j'obtiens de zolies url du style : monsite.com/maison-jardin.html :D à la place de monsite.com/categories.php?id=47
Donc, dans mon htaccess je récupére maison-jardin.html et non un id...

Alros est-ce que je dois rechanger mon lien sur ma page index ?
Dans ma page categories.php j'ai bien un code qui récupère l'id
$id = $_GET["id"];
Mais je n'arrive pas à matcher car pour l'instant je ne suis pas en mesure de le faire dans mon htaccess
Sauf si dans mon htaccess je le mets en dur (mais ce n'est pas utilisable sur l'enssemble du site :cry: )
RewriteRule ^maison-jardin\.html$ categories.php?id=47 [L]

Merci de ton aide
A+
 

jeroen

WRInaute passionné
Reprenons au début :

- Sois tu fais des url du type chaise-de-jardin-45.html avec la rewriterule suivante :
RewriteRule ^(.+)-([0-9]+)\.html$ categories.php?id=$2 [L]

- Soit tu fais des url du type chaise-de-jardin.html avec la rewriterule suivante :
RewriteRule ^(.+)\.html$ categories.php?titre=$1 [L]
et au début de la page categories.php tu fais une recherche sur ta base de donnée pour pouvoir retrouver l'id (45 dans l'exempe) correspondant au $_GET[titre] ("chaise-de-jardin" dans l'exemple)

capito ?
 

Discussions similaires

Haut