2010-04-27 2 views

Répondre

3

Il est possible de le faire avec Apache’s mod_rewrite module comme ceci:

RewriteRule ^/([^/]+/[^/]+)/([^/]+)(/.+)?$ /$1$3?p[]=$2 [N,QSA] 
RewriteRule ^/([^/]+)/([^/]+)$ /index.php?c=$1&m=$2 [L,QSA] 

Mais il serait certainement plus facile de le faire avec PHP:

$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); 
$segments = explode('/', trim($_SERVER['REQUEST_URI_PATH'], '/')); 
if (count($segments) >= 2) { 
    $_GET['class'] = array_shift($segments); 
    $_GET['m'] = array_shift($segments); 
    $_GET['p'] = $segments; 
} else { 
    // error 
} 

Ensuite, il vous suffit d'une seule règle à réécrire les demandes:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule !^index\.php$ index.php [L] 
+0

Avec l'addition de: $ segments = exploser ('/ ', $ segments); et une itération pour les autres paramètres de requête après: $ _GET ['p'] = array_shift ($ segments); la méthode simple que vous avez proposée a fonctionné comme un charme. Merci. – Blackbeard

+0

@vbklv: Ah oui, j'ai oublié de "exploser". – Gumbo

Questions connexes