url rewriting avec espace

Nouveau WRInaute
Bonjour

j'ai suivi le tuto pour la redirection d'url et j'arrive a ca :
Code:
# Article avec numéro de page et titre :
RewriteRule ^([0-9]*)-(.*)\  article.php?rzx=$1&nom=$2 [L]

ca fonctionne plutot pas mal, mais du coup, si dans la balise $nom j'ai un espace, il est automatiquement transformer en %20 ce qui au final n'est pas terrible pour la lecture de l'url.

Y'a t'il une solution pour soit faire passer l'espace normalement soit le remplacer par un caratere du style - ou ,

Merci.
 
WRInaute passionné
Salut,

Si je ne me plante pas, ça se situe au niveau du code qui effectue ta ré écriture et non dans la htaccess.
 
Nouveau WRInaute
ha.. c'est pas que ca m'arrange vraiement ca :)

donc un bout de code php qui vire les espaces en remplacant par des tirets et le tour est joué..

Merci
 
Nouveau WRInaute
bon donc la je seche

j'ai bien mis en place un petit bout de script php pour virer les espaces et mettre des tirets a la place, ce qui fonctionne tres bien.
Sauf (bah oui sinon c'est trop facile) que maintenant, j'ai plus acces a mes pages..

l'url est bonne, avec les tirets a la place des espaces, mais c'est dans le htaccess que j'ai du zapper un truc..

Code:
# Pages articles :
RewriteRule ^article-([0-9]*)-(.*)\  article.php?rzx=$1&nom=$2 [L]

format de l'url : http://www.com/article-(id)-nom-de-l'article

et une jolie page not found..
 
WRInaute discret
Bonjour
et bienvenue au f. WRI

pour le code php, je tu conseille d'utilisé cette fonction :

Code:
function nettoyage($text) 
{ 
   $separator = "-"; 
   $tofind = "àáâãäåòóôõöøèéêëçìíîïùúûüÿñ"; // Lettre accentuées 
   $replac = "aaaaaaooooooeeeeciiiiuuuuyn"; // Equivalent non accentué 
   $text = strtr(strtolower($text),$tofind,$replac); 
   $text = ereg_replace("[^a-z0-9.]", $separator, $text); 
   while (strstr($text, $separator . $separator)) 
      $text = str_replace($separator . $separator, $separator, $text); 
   if (substr($text, 0, 1) == $separator) 
      $text = substr($text, 1); 
   return(ereg_replace($separator . "$", "", $text)); 
}

pour le code httaccess : pourquoi tu es utilisé nom-de-l'article comme paramètre de la page article.php

en tous cas tester ce code : ( ton code sans \ )

Code:
RewriteRule ^article-([0-9]*)-(.*)  article.php?rzx=$1&nom=$2 [L]

ou

Code:
RewriteRule ^article-([0-9]*)-(.*)\/  article.php?rzx=$1&nom=$2 [L]
 
WRInaute passionné
pour ta premiere solution, il faut utiliser cette fonction:

rawurldecode()

ca te transformer les %xx en caractere ascii.

Pour ta deuxieme solution, essaye plutot:

RewriteRule ^article-([0-9]+)-(.+)$ article.php?rzx=$1&nom=$2 [L]
 
Nouveau WRInaute
bon alors effectivement avec ce code ca fonctionne parfaitement :

Code:
# Pages articles :
RewriteRule ^article-([0-9]*)-(.*)  article.php?rzx=$1&nom=$2 [L]

il suffisait juste virer le \

du coup, quelqu'un peut me dire a quoi il sert ce ' \ '

Merci
 
Discussions similaires
Haut