Introduction
La redirection HTTP est un moyen de pointer un domaine ou une adresse vers un autre. Il existe quelques types différents de redirections, chacun ayant une signification différente pour le navigateur client. Les deux types les plus courants sont les redirections temporaires et les redirections permanentes.
Les redirections temporaires (code d’état de réponse 302 Trouvé) sont utiles si une URL doit temporairement être servie à partir d’un emplacement différent. Par exemple, si vous effectuez une maintenance sur votre site, vous pouvez souhaiter utiliser une redirection temporaire depuis votre domaine vers une page d’explication pour informer vos visiteurs que vous serez bientôt de retour.
Les redirections permanentes (code d’état de réponse 301 Déplacé définitivement), en revanche, indiquent au navigateur qu’il doit oublier complètement l’ancienne adresse et ne plus tenter d’y accéder. Elles sont utiles lorsque votre contenu a été déplacé définitivement vers un nouvel emplacement, comme lors du changement de nom de domaine.
Ce guide couvrira une explication plus détaillée de la mise en œuvre de chaque type de redirection dans Nginx, et passera en revue quelques exemples de cas d’utilisation spécifiques.
Prérequis
Pour suivre ce tutoriel, vous aurez besoin de:
- A server with Nginx installed and set up to serve your website(s). You can find some examples and instructions on the tutorials for Ubuntu 22.04, Debian, or CentOS.
Solution en un coup d’œil
Dans Nginx, vous pouvez accomplir la plupart des redirections avec la directive intégrée rewrite
. Cette directive est disponible par défaut sur une installation Nginx fraîche et peut être utilisée pour créer des redirections temporaires et permanentes. Dans sa forme la plus simple, elle prend au moins deux arguments : l’ancienne URL et la nouvelle URL.
Vous pouvez mettre en œuvre une redirection temporaire avec les lignes suivantes dans la configuration de votre serveur :
Cette redirection indique au navigateur de diriger toutes les demandes pour www.domain1.com
vers www.domain2.com
. Cette solution, cependant, ne fonctionne que pour une seule page, pas pour l’ensemble du site. Pour rediriger plus qu’une seule page, vous pouvez utiliser la directive rewrite
avec des expressions régulières pour spécifier des répertoires entiers au lieu de simples fichiers individuels.
redirect
correspond aux motifs d’expressions régulières entre parenthèses. Il fait ensuite référence au texte correspondant dans la destination de redirection en utilisant l’expression $1
, où 1
est le premier groupe de texte correspondant. Dans des exemples plus complexes, les groupes de texte correspondants suivants sont numérotés séquentiellement.
Par exemple, si vous vouliez rediriger temporairement chaque page dans www.domain1.com
vers www.domain2.com
, vous pourriez utiliser ce qui suit :
Par défaut, la directive rewrite
établit une redirection temporaire. Si vous souhaitez créer une redirection permanente, vous pouvez le faire en remplaçant redirect
par permanent
à la fin de la directive, comme ceci :
Passons à quelques exemples spécifiques.
Exemple 1 — Passage à un autre domaine
Si vous avez établi une présence web et souhaitez changer votre domaine pour une nouvelle adresse, il est préférable de ne pas simplement abandonner votre ancien domaine. Les signets vers votre site et les liens vers votre site situés sur d’autres pages à travers Internet seront rompus si votre contenu disparaît sans aucune instruction au navigateur sur la manière de trouver sa nouvelle position. Changer de domaine sans redirection fera perdre du trafic à votre site provenant des visiteurs précédents et des anciens liens.
Dans cet exemple, nous allons configurer une redirection depuis l’ancien domaine appelé domain1.com
vers le nouveau appelé domain2.com
. Nous utiliserons des redirections permanentes ici car l’ancien domaine sera obsolète et tout le trafic devrait désormais aller vers le nouveau domaine.
Supposons que vous avez votre site web configuré pour être servi à partir d’un seul domaine appelé domain1.com
déjà configuré dans Nginx comme suit :
Supposons également que vous servez déjà votre future version du site web à partir de domain2.com
:
Modifions le fichier de configuration du bloc serveur de domain1.com
pour ajouter une redirection permanente vers domain2.com
:
Nous avons ajouté la redirection susmentionnée en utilisant une directive rewrite
. L’expression régulière ^/(.*)$
correspond à tout ce qui suit le /
dans l’URL. Par exemple, http://domain1.com/index.html
sera redirigé vers http://domain2.com/index.html
. Pour réaliser la redirection permanente, nous ajoutons simplement permanent
après la directive rewrite
.
Notez : N’oubliez pas de tester votre configuration en utilisant nginx -t
puis redémarrez Nginx après avoir apporté vos modifications.
Exemple 2 — Création d’une expérience persistante malgré les changements de nom de pages uniques
Parfois, il est nécessaire de changer les noms des pages individuelles qui ont déjà été publiées et ont reçu du trafic sur votre site. Changer uniquement le nom causerait une erreur 404 Not Found pour les visiteurs essayant d’accéder à l’URL d’origine, mais vous pouvez éviter cela en utilisant une redirection. Cela garantit que les personnes qui ont mis en signet vos anciennes pages ou les ont trouvées via des liens obsolètes sur les moteurs de recherche atteindront toujours la bonne page.
Supposons que votre site Web avait deux pages distinctes pour les produits et les services appelées products.html
et services.html
respectivement. Maintenant, vous avez décidé de remplacer ces deux pages par une seule page d’offre appelée offers.html
à la place. Nous allons configurer une redirection simple pour products.html
et services.html
vers offers.html
.
Nous supposons que votre site Web est configuré comme suit :
La configuration des redirections est aussi simple que l’utilisation de deux directives de redirection.
La directive rewrite
accepte l’adresse d’origine qui doit être redirigée ainsi que l’adresse de destination d’une nouvelle page. Comme le changement ici n’est pas temporaire, nous avons également utilisé permanent
dans la directive. Vous pouvez utiliser autant de redirections de ce type que vous le souhaitez pour vous assurer que vos visiteurs ne verront pas d’erreurs 404 Not Found inutiles lors du déplacement du contenu du site.
Conclusion
Vous avez maintenant les connaissances nécessaires pour rediriger les demandes vers de nouveaux emplacements. Assurez-vous d’utiliser le bon type de redirection, car une utilisation incorrecte des redirections temporaires peut nuire au classement de recherche.
Il existe plusieurs autres utilisations des redirections HTTP, notamment le forçage de connexions SSL sécurisées (c’est-à-dire l’utilisation de https
au lieu de http
) et en veillant à ce que tous les visiteurs aboutissent uniquement sur l’adresse préfixée par www.
du site Web.
Utiliser les redirections correctement vous permettra de tirer parti de votre présence web actuelle tout en vous donnant la possibilité de modifier la structure de votre site si nécessaire. Si vous souhaitez en savoir plus sur les façons dont vous pouvez rediriger vos visiteurs, Nginx propose une excellente documentation sur le sujet dans les sections du module de réécriture de la documentation officielle et dans le article de blog officiel sur la création de redirections.