Soucis avec mes urls - rewriting et les espaces

DuClik

Nouveau WRInaute
Bonjour,
Je voudrais que les urls de mon catalogue contiennent le nom de mes produits plutot que leur id.

Je m'explique: mes urls contiennent l'ID de l'objet demandé ainsi que différents parametres. ce qui donne une adresse (avec url rewriting) du genre: .../catalogue-1-0.html

Or pour le référencement, il vaut mieux que ce soit des mots qui apparaissent dans l'url (je me trompe?) au lieu de l'id. Donc je voudrais une adresse du genre: catalogue-panier_rond-0.html

mon soucis c'est que si je remplasse l'id par le nom de l'objet (qui peut comporter des espaces), mon url va s'écrire: .../catalogue-Panier%20rond-0.html et là ça coince.

Comment transformer les espaces en "_" ?
Et ensuite, comment retransformer .../catalogue-panier_rond-0.html pour que je puisse récupérer l'id de cet objet sachant que dans la base de données, il s'appelle "panier rond"

Voilà, je crois que j'ai fait le tour de mon problème.
Un petit coup de pouce serait la bienvenue! :)

Bonne journée.
au fait, l'adresse du catalogue
 

Borower

WRInaute passionné
Utilise la fonction strtr
Code:
function suppespaces($mot){ 
$espaces= " "; 
$remplaceespaces = "-"; 
return(strtr($mot,$espaces,$remplaceespaces)); 
}
Voila
Utilise plutot le - comme séparateur de mot et non _

_ n'est pas un séparateur pour google
 

DuClik

Nouveau WRInaute
Ok, merci je tente ça!

Je viens aussi de me dire que ce n'est pas forcement la peine de juste passer le nom de l'objet dans la variable pour ensuite la traiter, retrouver son id etc.

je garde mes urls comme avant: catalogue-2-1.html
mais avant je mets simplement le nom de l'objet qui ne servira pas ensuite (juste pour le référencement)
genre: catalogue-panier-rond-2-1.html

C'est plus simple. :)
 

DuClik

Nouveau WRInaute
Alors c'est bon, pour les espaces ça fontionne.

Nouveau soucis: au niveau du .htaccess

avant j'avais:

Code:
RewriteRule ^catalogue-([0-9]+)-([0-9]+)\.html$ catalogue.php?id=$1&debut=$2  [L]

mais les noms de mes objets peuvent etre composés de plusieurs mots (ex: panier rond)
et comme je remplace les espaces par des tirets, ça me donne une adresse:
catalogue-panier-rond-2-1.html

alors comment faire pour que dans mon .htaccess on ne diférencie pas catalogue-panier-rond-2-1.html (dont le nom comporte 2 mots) de catalogue-corbeille-3-1.html (1 seul mot)

Code:
RewriteRule ^catalogue-([.]+)-([0-9]+)-([0-9]+)\.html$ catalogue.php?nom=$1&id=$2&debut=$3 [L]
ne peut pas fontionne puisqu'il peut y avoir plusieurs ([.]) séparés par des tirets avant le nombre représentant l'id de l'objet.

Je sens que c'est pas clair du tout :?
avez-vous compris mon problemes?
 

Borower

WRInaute passionné
Fait plutot des adresses du style:
catalogue-2-1-panier-rond.html
Code:
RewriteRule ^catalogue-([0-9]+)-([0-9]+)-(.*)\.html$ catalogue.php?id=$1&debut=$2  [L]
 

Discussions similaires

Haut