Redirection D’URL

Plusieurs types de réponse au navigateur entraîneront une redirection. Ceux-ci varient selon qu’ils affectent les en-têtes HTTP ou le contenu HTML. Les techniques utilisées dépendent généralement du rôle de la personne qui les met en œuvre et de son accès aux différentes parties du système. Par exemple, un auteur web sans contrôle sur les en-têtes peut utiliser une balise META Refresh alors qu’un administrateur de serveur web redirigeant toutes les pages d’un site est plus susceptible d’utiliser la configuration du serveur.,

redirection Manuelledit

la technique la plus simple consiste à demander au visiteur de suivre un lien vers la nouvelle page, généralement en utilisant une ancre HTML comme:

Please follow <a href="http://www.example.com/">this link</a>.

Cette méthode est souvent utilisée comme une solution de repli-si le navigateur ne prend pas en charge la redirection automatique, le visiteur peut toujours atteindre le document cible en suivant le lien.

codes D’état HTTP 3xxEdit

dans le protocole HTTP utilisé par le World Wide Web, une redirection est une réponse avec un code d’état commençant par 3 qui provoque un navigateur pour afficher une page différente., Si un client rencontre une redirection, il doit faire un certain nombre de décisions comment gérer la redirection. Différents codes d’état sont utilisés par les clients pour comprendre le but de la redirection, comment gérer la mise en cache et quelle méthode de requête utiliser pour la requête suivante.

HTTP/1.1 définit plusieurs codes d’État pour la redirection (RFC 7231):

  • 300 choix multiples (par exemple offrir différentes langues)
  • 301 déplacé de façon permanente (redirige en permanence d’une URL à une autre en passant l’équité du lien vers la page redirigée)
  • 302 trouvé (initialement « redirection temporaire » dans HTTP / 1.,0 et populairement utilisé pour les scripts CGI; remplacé par 303 et 307 dans HTTP/1.,i> 303 voir autre (force UNE DEMANDE GET à la nouvelle URL même si la demande originale était POST)
  • 307 redirection temporaire (fournit une nouvelle URL pour que le navigateur soumette à nouveau une demande GET ou POST)
  • 308 redirection permanente (fournit une nouvelle URL pour que le navigateur soumette à nouveau une demande GET ou POST)

codes »>

code d’état HTTP version HTTP temporaire/permanent Cacheable méthode de demande requête ultérieure 301 HTTP/1.,0 Permanent Yes GET / POST may change 302 HTTP/1.0 Temporary not by default GET / POST may change 303 HTTP/1.1 Temporary never always GET 307 HTTP/1.1 Temporary not by default may not change 308 HTTP/1.,1 Permanent par défaut ne peut pas changer

Tous ces codes d’état de besoin de l’URL de la cible de redirection dans le Lieu: en-tête de la réponse HTTP. Les 300 choix multiples répertorient généralement tous les choix dans le corps du message et affichent le choix par défaut dans L’en-tête Location:.

(Les codes D’État 304 not modified et 305 use proxy ne sont pas des redirections).,

exemple de réponse HTTP pour une redirection 301edit

une réponse HTTP avec la redirection 301 « déplacée de façon permanente » ressemble à ceci:

Utilisation de scripts côté serveur pour redirectionEdit

Les auteurs web produisant du contenu HTML ne peuvent généralement pas créer de redirections à l’aide d’en-têtes HTTP car La même chose est généralement vraie même pour les programmeurs écrivant des scripts CGI, bien que certains serveurs permettent aux scripts d’ajouter des en-têtes personnalisés (par exemple en activant les « en-têtes non analysés »)., De nombreux serveurs web généreront un code d’état 3xx si un script génère une ligne d’en-tête » Location: ». Par exemple, en PHP, on peut utiliser la « tête » de la fonction:

header('HTTP/1.1 301 Moved Permanently');header('Location: http://www.example.com/');exit();

en-têtes peuvent être nécessaires pour empêcher la mise en cache. Le programmeur doit s’assurer que les en-têtes sont sortis avant le corps. Cela peut ne pas correspondre facilement au flux naturel de contrôle à travers le code. Pour aider à cela, certains frameworks pour la génération de contenu côté serveur peuvent mettre en mémoire tampon les données du corps., Dans le langage de script ASP, cela peut également être accompli en utilisant response.buffer=true Et response.redirect "http://www.example.com/" HTTP/1.1 permet une référence d’URI relative ou une référence d’URI absolue. Si la référence URI est relative, le client calcule la référence URI absolue requise conformément aux règles définies dans la RFC 3986.

serveur HTTP Apache mod_rewriteEdit

l’extension mod_alias du serveur HTTP Apache peut être utilisée pour rediriger certaines requêtes., Les directives de configuration typiques ressemblent à:

pour une réécriture et une redirection D’URL plus flexibles, Apache mod_rewrite peut être utilisé. Par exemple, pour rediriger une requête vers un nom de domaine canonique:

RewriteEngine onRewriteCond %{HTTP_HOST} ^(+\.)*oldsite\.example\.com\.?(:*)?$ RewriteRule ^(.*)$ http://newsite.example.net/$1 

Une telle configuration peut être appliquée à un ou à tous les sites du serveur via les fichiers de configuration du serveur ou à un seul répertoire de contenu via un fichier .htaccess.,

nginx rewriteEdit

Nginx a un module de réécriture http intégré, qui peut être utilisé pour effectuer un traitement D’URL avancé et même la génération de pages web (avec la directive return). Un exemple montrant une telle utilisation avancée du module de réécriture est mdoc.su, qui implémente un service de raccourcissement d’URL déterministe entièrement à l’aide du langage de configuration Nginx seul.

par exemple, si une requête pour /DragonFlyBSD/HAMMER.5 s’il devait arriver, il serait d’abord redirigé en interne vers /d/HAMMER.,5 avec la première directive rewrite ci-dessous (affectant uniquement l’état interne, sans aucune réponse HTTP émise au client pour l’instant), puis avec la deuxième directive rewrite, une réponse HTTP avec un code D’état 302 trouvé serait émise au client pour rediriger réellement vers le script cgi externe de web-man:

Refresh Meta tag et http refresh headerEdit

Netscape a introduit la fonctionnalité meta refresh qui actualise une page après un certain laps de temps. Cela peut spécifier une nouvelle URL pour remplacer une page par une autre. Ceci est pris en charge par la plupart des navigateurs web., Un délai d’attente de zéro seconde entraîne une redirection immédiate. Ceci est traité comme une redirection permanente 301 par Google, permettant le transfert de PageRank vers la page cible.

Voici un exemple de document HTML simple qui utilise cette technique:

Cette technique peut être utilisée par les auteurs web car la balise meta est contenue dans le document lui-même. La balise meta doit être placée dans la section » head  » du fichier HTML. Le nombre « 0 » dans cet exemple peut être remplacé par un autre nombre pour obtenir un délai de autant de secondes., L’ancre dans la section » corps  » est destinée aux utilisateurs dont les navigateurs ne prennent pas en charge cette fonctionnalité.

le même effet peut être obtenu avec un HTTPrefresh en-tête:

Cette réponse est plus facile à générer par les programmes CGI car il n’est pas nécessaire de changer le code d’état par défaut.

Voici un programme CGI simple qui effectue cette redirection:

Remarque: habituellement, le serveur HTTP ajoute automatiquement la ligne d’état et L’en-tête Content-Length.,

le W3C décourage l’utilisation de meta refresh, car il ne communique aucune information sur la ressource originale ou nouvelle, au navigateur (ou au moteur de recherche). Les directives D’accessibilité du contenu Web du W3C (7.4) découragent la création de pages d’actualisation automatique, car la plupart des navigateurs web ne permettent pas à l’utilisateur de désactiver ou de contrôler le taux de rafraîchissement. Certains articles qu’ils ont écrits sur la question incluent W3C Web Content Accessibility Guidelines (1.0): assurez-vous que l’utilisateur contrôle les modifications de contenu sensibles au temps, utilisez les redirections standard: ne cassez pas le bouton Retour!, et techniques de base pour les lignes directrices sur l’accessibilité du contenu Web 1.0 section 7.

JavaScript redirectsEdit

JavaScript peut provoquer une redirection par la définition de la window.location attribut, par exemple:

window.location='http://www.example.com/'

Normalement JavaScript pousse le redirecteur URL du site à l’historique du navigateur. Il peut provoquer des boucles de redirection lorsque les utilisateurs appuient sur le bouton Retour. Avec la commande suivante vous pouvez empêcher ce type de comportement.,

window.location.replace('http://www.example.com/')

cependant, les en-têtes HTTP ou la balise meta refresh peuvent être préférés pour des raisons de sécurité et parce que JavaScript ne sera pas exécuté par certains navigateurs et de nombreux robots d’exploration web.

frame redirectsEdit

un effet légèrement différent peut être obtenu en créant un cadre en ligne:

<iframe height="100%" width="100%" src="http://www.example.com/">Please follow <a href="http://www.example.com/">link</a>.</iframe>

Une principale différence avec les méthodes de redirection ci-dessus est que pour une redirection de cadre, le navigateur affiche l’URL du document de cadre et non L’URL de la page cible dans, Cette technique de dissimulation peut être utilisée pour que le lecteur voit une URL plus mémorable ou pour dissimuler frauduleusement un site de phishing dans le cadre de l’usurpation de site web.

avant HTML5, le même effet pouvait être fait avec un cadre HTML contenant la page cible:

Redirect chainsEdit

une redirection peut conduire à une autre. Par exemple, L’URL « http://wikipedia.com » (avec « *.com » comme domaine) est d’abord redirigée vers https://www.wikipedia.org/ (avec le nom de domaine en .org), où vous pouvez naviguer vers le site spécifique à la langue., Ceci est inévitable si les différents liens de la chaîne sont servis par différents serveurs, mais il doit être minimisé en réécrivant l’URL autant que possible sur le serveur avant de la renvoyer au navigateur en tant que redirection.

Wikipedia redirige ses pages vers HTTPS par défaut depuis 2015.

redirect loopsEdit

parfois, une erreur peut amener une page à se rediriger vers elle-même, éventuellement via d’autres pages, conduisant à une séquence infinie de redirections. Les navigateurs doivent arrêter la redirection après un certain nombre de sauts et afficher un message d’erreur.

HTTP/1.,1 États Standard:

un client doit détecter et intervenir dans les redirections cycliques (c’est-à-dire les boucles de redirection « infinies »).

remarque: une version antérieure de cette spécification recommandait un maximum de cinq redirections (, Section 10.3). Les développeurs de contenu doivent être conscients que certains clients peuvent implémenter une telle limitation fixe.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *