ecrire ce que l'on veut dans ses urls..

WRInaute occasionnel
Salut
Je suis en train de réecrire mes urls via un htaccess, cela marche bien mais pas aussi bien ke je l'aurais souhaité...
Exemple :

Pour passer de
www.monsit.com/view_category.php?id=1 à www.monsit.com/view-category-1.html Je fais la chose suivante et cela passe bien:

Mon htaccess:

Code:
RewriteRule ^view-category-([0-9]+)\.html$	      view_category.php?id=$1 [L]

Ma page php
Code:
<a href="view-category-<?php echo $blabla ["id"]; ?>.html">lien</a>

Je voudrais savoir s'il est possible d'avoir en plus du numero de la categorie, le nom de cette categorie dans mon url. J'ai esayer la chose suivante :

Mon htaccess :

Code:
RewriteRule ^view-category-([a-z]+)\-([0-9]+)\.html$	view_category.php?cid=$1 [L]

ma page php :
Code:
<a href="view-category-<?php echo $blabla ["nom_categorie"]; ?>-<?php echo $blabla ["id"]; ?>.html">lien</a>

Je veux obtenir la chose suivante :

www.monsite.com/view-category-nom-de-la ... ie-52.html

En plus d avoir une erreur 404, j ai plein de 20% entre les mots, je pense ke je peux eliminer ca avec un explode (enfin je ne m y connais pas en prog alors...)

Ca serait vraiment sympa si vous pouviez m aider sur ce truc
Merci
Hanlin
 
WRInaute accro
les %20 dans l'url ce sont les espaces qui sont convertis en caractères compréhensibles par le navigateur. IL faut donc ne pas avoir d'espace dans l'url
 
WRInaute occasionnel
Merci de vos reponses,
Apparemment le
Code:
<?php echo urlencode($blabla["nom_categorie"]); ?>
est bon pour enlever les 20% mais pour ce qui du htaccess, comment je peux gerer cela ? J ai toujours une erreur 404 qui s'affiche quand le nom de la categorie est dans mon URL...
Merci encore
hanlin
 
WRInaute occasionnel
salut
ok no probleme pour les resultats, excusez moi de ne pas l avoir fait plus tot....En fait dans mon htaccess j 'ai mis :
Code:
RewriteRule ^view-category-([^.]*)\-([0-9]+)\.html$   view_category.php?cid=$2[L]

La difference avec la ligne citee plus haut c'est ([a-z]+) que j 'ai remplacé par ([^.]*). En faisant ca ca a marché....

Pour ce qui est du code dans la page php, j'ai utilisé une fonction :

Code:
function code_url($string)
{
$string = strtolower($string);
$string = str_replace("( |')", "-", $string);
$accent = array('&','â','à','é','è','ê','î','ô','û','ç');
$sans_accent = array('and','a','a','e','e','e','i','o','u','c');
$string = str_replace($accent, $sans_accent, $string);
$string = eregi_replace("[^a-z0-9]","-",$string);
$string = eregi_replace("(^(_)*|(_)*$)","",$string);
$string = eregi_replace("(-){2,3}","",$string);
return $string;
}

Cette fonction sert à enlever les tirets, et les accents et évite d'avoir des "%20"....dans mon lien cela se traduit par :

Code:
<a href="view-category-<?php echo code_url($blabla ["nom_categorie"]); ?>-<?php echo $blabla ["id"]; ?>.html">lien</a>

En esperant avoir ete clair;;;
hanlin
 
Discussions similaires
Haut