Redirections HTTP (13.03.12) |
Une redirection c'est une URI (ou URL c'est pareil) qui renvoie à une autre URI pour que le client ait une réponse. Plusieurs type de redirections coexistent. Les redirections sont, du point de vue du protocole HTTP, des codes de réponse commençant par un '3'. On connaît tous le code 404 qui signifie 'Pas trouvé'. Voyons les deux cas principalement utilisés dans le cadre de la programmation d'un site: Attention, les redirections 301 et 302 ne sont pas destinées à masquer l'adresse de destination. Les utilisateurs seront déviés vers l'adresse de destination, et c'est l'adresse de destination qui apparaitra dans la barre d'adresse. NB: Cela a été testé sur apache; pour d'autres serveurs web, faut voir. « 301 Permanent Redirect »Ce code signifie Moved Permanently. Autrement dit 'la page que vous cherchez a une nouvelle URI définitive'. On l'utilise surtout dans le cas où un site web a été refait et dont certaines URI ne sont plus valables. Par exemple, un site avait auparavant www.lesite.ch/webmail/ mais désormais ce service est sur webmail.monsite.ch. Afin que les gens qui ont un marque-page sur l'ancienne URI le trouve encore, on met en place un script dans www.lesite.ch/webmail/ qui va rediriger vers webmail.monsite.ch. Selon le protocole, le navigateur doit afficher ensuite la nouvelle URI dans la barre URI. C'est une invitation à noter le changement d'URI. Le script sur webmail.monsite.ch pourrait détecter que la personne vient depuis www.lesite.ch/webmail/ (avec un paramètre dans le header 'Location' par exemple) et afficher une alerte pour que le surfeur modifie son signet si on a le paramètre.En PHP cela donnerait ça: header("HTTP/1.1 301 Moved Permanently"); header("Location: http://webmail.monsite.ch/"); exit; ?> Attention à bien mettre le / final de l'URI. De même l'URI devrait toujours être absolue et non relative. Ou, avec un paramètre: header("HTTP/1.1 301 Moved Permanently"); header("Location: http://webmail.monsite.ch/?from=olduri"); exit; ?> Dans un fichier de config Apache (par exemple .htaccess), cela donnerait ceci: Redirect 301 /webmail http://webmail.monsite.ch/ Ce code signifie Found. Autrement dit, 'la page que vous cherchez est ailleurs'. La principale différence avec le 301 c'est que le 301 a la notion de changement permanent et il faut donc désormais utiliser la nouvelle URI. Avec le 302, le protocole recommande de conserver l'URI originale. Peut-être n'est-ce que temporaire; peut-être l'URI définitive sera différente. Notons qu'en PHP, un simple |