2009-05-19 3 views
0

Je suis un n00b totale à mod_rewrite et ce que je suis en train de faire des sons simples:Can mod_rewrite peut-il convertir n'importe quel nombre de paramètres avec n'importe quel nom?

au lieu d'avoir domain.com/script.php?a=1 & b = 2 & c = 3 Je voudrais d'avoir:

domain.com/script|a:1;b:2;c:3

Le problème est que mon script prend un grand nombre de paramètres dans une variété de combinaisons, et l'ordre est sans importance , coder chacun dans l'expression et attendre un certain ordre est irréalisable. Donc peut-on créer une règle qui passe simplement tous les paramètres au script, indépendamment de l'ordre ou du nombre de paramètres? Donc, si quelqu'un tape

domain.com/script|a:1;b:2;j:7 il passera tous ces paramètres et valeurs tout comme il le ferait avec domain.com/script|b:2 ; a: 1; ?

Merci!

Répondre

3

J'utiliser PHP pour analyser le chemin d'URL demandée:

$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); 
$params = array(); 
foreach (explode(',', substr($_SERVER['REQUEST_URI_PATH'], 6)) as $param) { 
    if (preg_match('/^([^:]+):?(.*)$/', $param, $match)) { 
     $param[rawurldecode($match[1])] = rawurldecode($match[2]); 
    } 
} 
var_dump($params); 

Et la règle mod_rewrite de réécrire ces demandes à votre fichier /script.php:

RewriteRule ^script\|.+ script.php [L] 
+0

ok qui a fonctionné! avait un petit problème de cartographie mais je l'ai eu. Merci! – nerdabilly

Questions connexes