Comment créer des redirections temporaires et permanentes avec Nginx

introduction

La redirection HTTP est un moyen de faire pointer un domaine ou une adresse vers un autre. Il existe différents types de redirections, chacune signifiant quelque chose de différent du navigateur client. Les deux types les plus courants sont les redirections temporaires et les redirections permanentes.

Les redirections temporaires (code de statut de réponse * 302 trouvés *) sont utiles si une URL doit être servie temporairement à partir d’un autre emplacement. Par exemple, si vous effectuez la maintenance du site, vous pouvez utiliser une redirection temporaire de votre domaine vers une page d’explication pour informer vos visiteurs que vous reviendrez bientôt.

Les redirections permanentes (code d’état de la réponse * 301 déplacé de façon permanente *), par contre, informent le navigateur qu’il doit complètement oublier l’ancienne adresse et ne plus tenter d’y accéder. Celles-ci sont utiles lorsque votre contenu a été déplacé de manière permanente vers un nouvel emplacement, comme lorsque vous changez de nom de domaine.

Vous pouvez créer une redirection temporaire dans Nginx en ajoutant une ligne comme celle-ci à l’entrée de blocage du serveur dans le fichier de configuration du serveur:

rewrite  ;

De même, utilisez une ligne comme celle-ci pour une redirection permanente:

rewrite  ;

Ce guide explique plus en détail comment implémenter chaque type de redirection dans Nginx et donne quelques exemples pour des cas d’utilisation spécifiques.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

La solution en un coup d’œil

Dans Nginx, vous pouvez effectuer la plupart des redirections avec la directive intégrée + rewrite +. Cette directive est disponible par défaut sur une nouvelle installation de Nginx et peut être utilisée pour créer des redirections temporaires et permanentes. Dans sa forme la plus simple, il prend au moins deux arguments: l’ancienne URL et la nouvelle.

Vous pouvez implémenter une redirection temporaire avec les lignes suivantes dans la configuration de votre serveur:

Redirection temporaire avec réécriture

server {
   . . .
   server_name www.domain1.com;
   rewrite ^/$ http://www.domain2.com redirect;
   . . .
}

Cette redirection demande au navigateur de diriger toutes les demandes de + www.domain1.com + vers + www.domain2.com +. Cette solution ne fonctionne toutefois que pour une seule page, pas pour l’ensemble du site. Pour rediriger plus d’une page, vous pouvez utiliser la directive + rewrite + avec larges expressions pour spécifier des répertoires entiers de fichiers uniques.

+ redirect + correspond aux modèles d’expression régulière 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 appariés suivants reçoivent des numéros de manière séquentielle.

Par exemple, si vous souhaitez rediriger temporairement chaque page avec + www.domain 1.com + vers + www.domain 2.com +, vous pouvez utiliser les éléments suivants:

Redirection temporaire avec réécriture

server {
   . . .
   server_name www.domain1.com;
   rewrite ^/(.*)$ http://www.domain2.com/$1 redirect;
   . . .
}

server {
   . . .
   server_name www.domain2.com;
   . . .
}

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:

Redirections permanentes

rewrite ^/$ http://www.domain2.com ;
rewrite ^/(.*)$ http://www.domain2.com/$1 ;

Passons à quelques exemples spécifiques.

Exemple 1 - Passage dans un domaine différent

Si vous avez établi une présence sur le Web et souhaitez changer votre domaine en une nouvelle adresse, il est préférable de ne pas abandonner votre ancien domaine. Les signets vers votre site et les liens vers votre site situés sur d’autres pages d’Internet se briseront si votre contenu disparaît sans que le navigateur ne sache comment trouver son nouvel emplacement. Si vous changez de domaine sans rediriger vos pages, votre site perdra le trafic de vos précédents visiteurs.

Dans cet exemple, nous allons configurer une redirection de l’ancien domaine appelée + domain1.com + vers le nouveau nommé + domain2.com +. Nous allons utiliser des redirections permanentes ici car l’ancien domaine sera supprimé et tout le trafic devrait désormais aller vers le nouveau domaine.

Supposons que votre site Web soit configuré pour être servi depuis un seul domaine appelé + domain1.com + déjà configuré dans Nginx comme suit:

/etc/nginx/sites-available/domain1.com

server {
   . . .
   server_name domain1.com;
   . . .
}

Nous supposerons également que vous servez déjà votre future version du site Web à «+ domain2.com +»:

/etc/nginx/sites-available/domain2.com

server {
   . . .
   server_name domain2.com;
   . . .
}

Modifions le fichier de configuration du bloc de serveurs + domain 1.com + pour ajouter une redirection permanente vers + domain 2.com +:

/etc/nginx/sites-available/domain1.com

server {
   . . .
   server_name domain1.com;
   rewrite ^/(.*)$ http://domain2.com/$1 permanent;
   . . .
}

Nous avons ajouté la redirection susmentionnée à l’aide de la directive + rewrite +. L’expression régulière + ^ / (. *) $ + Correspond à tout ce qui suit le + / + de l’URL. Par exemple, + http: // domain1.com / + sera redirigé vers + http: // domain2.com / +. Pour réaliser la redirection permanente, nous ajoutons simplement + permanent + après la directive + rewrite +.

Exemple 2 - Création d’une expérience persistante malgré des changements de nom de page uniques

Il est parfois nécessaire de modifier les noms des pages individuelles déjà publiées et de recevoir du trafic sur votre site. Changer le nom seul provoquerait une erreur 404 Introuvable 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 marqué vos anciennes pages de signets ou les ont trouvées via des liens obsolètes sur les moteurs de recherche atteindront toujours la page correcte.

Imaginons que votre site Web comporte deux pages distinctes pour les produits et services, appelées + products.html et` + services.html`, respectivement. Vous avez maintenant décidé de remplacer ces deux pages par une seule page d’offre intitulée + offers.html +. 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:

Configuration de bloc de serveur d’origine supposée

server {
   . . .
   server_name example.com www.example.com;
   . . .
}

Configurer les redirections est aussi simple que d’utiliser deux directives + Redirect +.

Redirections ajoutées à la configuration d’origine

server {
   . . .
   server_name example.com www.example.com;

   rewrite  ;
   rewrite  ;
   . . .
}

La directive + rewrite + accepte l’adresse d’origine à rediriger 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 les erreurs inutiles Introuvable lors du déplacement du contenu du site.

Conclusion

Vous avez maintenant les connaissances nécessaires pour rediriger les demandes vers de nouveaux emplacements. Veillez à utiliser le type de redirection correct, car une mauvaise utilisation des redirections temporaires peut nuire au classement de votre recherche.

Il existe plusieurs autres utilisations des redirections HTTP, notamment le forçage de connexions SSL sécurisées (c’est-à-dire en utilisant + https au lieu de` + http`) et en s’assurant que tous les visiteurs ne se retrouveront que sur l’adresse préfixée + www. + du site Web.

L’utilisation correcte des redirections vous permettra de tirer parti de votre présence Web actuelle tout en vous permettant de modifier la structure de votre site si nécessaire. Si vous souhaitez en savoir plus sur les moyens de rediriger vos visiteurs, Nginx dispose d’une excellente documentation sur le sujet dans les sections rewrite du module officiel documentation et bulletin officiel sur la création de redirections.