Lorsqu’on utilise une réécriture d’URL (URL Rewriting pour les anglophones), la variable $_GET est remplie d’après les règles de réécriture dictées dans le fichier .htaccess, malheureusement on perd les autres paramètres passés en GET.
Voici donc un snippet permettant de rétablir l’ordre dans sa variable $_GET :
Le principe :
Le principe est simple, on reprend l’URL de base, stockée dans $_SERVER['REQUEST_URI'], puis on va la découper pour récupérer les paramètres qui lui sont passés.
Le code :
preg_match_all('/[\&\?]([^\&]+)=([^\&]+)/', $_SERVER['REQUEST_URI'], $matches);//Découpage de l'URL
foreach($matches[1] as $k => $v) {
if (!isset($_GET[$v]))
$_GET[$v] = $matches[2][$k];//Injection dans la variable $_GET
}
Nous voici désormais avec un variable $_GET complète
Edit : Godefroy me précise qu’on peut simplement utiliser le paramètre [QSA] en face de sa règle de réécriture ^^ (il me suffisait de lire la doc du mod_rewrite)
Contact
3 Commentaires
Ouais ou sinon tu utilises beaucoup plus simplement l’option QSA de RewriteRule
cf http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
Merci pour l’astuce, j’avoue que certains paramètres dans le mod_rewrite me sont étrangers ^^
Merci, ce code fonctionne parfaitement.