Ma solution a moi qui fait ce que tu veux (à base de mod_rewrite [1 ligne] et de php des famille) :
Et dans le php, j’ai d’abord deux fonctions pour traiter mes urls (désolé pour la doc en anglais mais je c/c tel quel parce que j’ai la flemme):
[code]//fill $url_elems with $pure_url (/elem1/elem2///elem3 => array(0 => ‘elem1’, 1 => ‘elem2’, 2 => ‘elem3’))
//$clean_url receive the url cleaned up from the messy ///
function get_url_elems($pure_url, $url_elems, $clean_url)
{
$url_elems = array();
$clean_url = ‘/’;
preg_match_all("/(/([^/]+)/)/s", $pure_url, $row_matches);
foreach ($row_matches[0] as $key => $row_match)
{
$row_matches[2][$key] = strtoupper($row_matches[2][$key]);
$clean_url .= str_replace(’/’, ‘’, $row_matches[2][$key]).’/’;
array_push($url_elems, str_replace(’/’, ‘’, $row_matches[2][$key]));
}
return ($url_elems);
}
//make up an url $base_url/elem1/elem2/elem3/, $elems is either an array or a single element
function make_url($base_url, $elems)
{
$url = $base_url;
foreach ((array)$elems as $elem)
{
$url .= $elem.’/’;
}
return ($url);
}[/code]
De manière basique, make_url permet de “créer” tes url, alors que get_url_elems est appelé une fois en début de page pour savoir où on est.
Donc pour aller a tonsite.com/truc/bidule/tagada/tapage-machin.chouette, tu fais d’abord un:
$url = make_url('tonsite.com', array('truc', 'bidule', 'tagada', 'tapage-machin.chouette'));
<a href="<?=$url?>">Cliquez ici !</a>
Ensuite dans la page index.php
[code]$url_set = array();
$current_url = ‘’;
get_url_elems($_GET[‘do’], &$url_set, &$current_url);
// $current_url recoit l’url “nettoyée” des / superflus
// $url_set est un tableau contenant les diverses parties de l’url, en majuscule
switch ($url_set[0]) {
case ‘TRUC’:
//etc etc, ici libre à toi si tu t’en sers de regarder dans $url_set[1], puis 2, …
break;
default: break;
}[/code]
Et donc si tu as une url avec des / en trop partout, genre tonsite.com/truc//////bidule//tagada///////tapage-machin.chouette/ ça fonctionne tout de même, et $current_url contiendra la version “propre” au cas où tu en ai besoin. De la même maniere, majuscule/minuscule importent peu.
En esperant que ça aide.