Restaurer la variable $_GET après une réécriture d’URL

Rédacté le 19/05/2010 WebDev

Tags: , ,

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)

2 commentaires to Restaurer la variable $_GET après une réécriture d’URL

  • 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

  • Leave a Reply

    Notifiez-moi des commentaires à venir via email. Vous pouvez aussi vous abonner sans commenter.

    Bienvenue sur mon blog.
    Il s'agit avant tout d'une zone de veille pour moi, un lieu où je stocke les astuces qui me serviront à nouveau plus tard.
    Au menu, du PHP, javascript, un peu de CSS et des astuces diverses...