Faire une redirection 301 permanente avec Nginx vers un site

Au début, NGINX est un logiciel qui peut faire peur, mais croyez-moi, c’est vraiment un outil formidable une fois qu’on le maîtrise. D’ailleurs au fait, c’est quoi NGINX ? NGINX qui est un logiciel libre de serveur Web ainsi qu’un proxy inverse qui existe maintenant depuis de nombreuses années. Pendant longtemps le serveur web Apache a été loin devant en nombre d’utilisateurs, mais à présent, c’est NGINX qui est passé devant. Il est d’ailleurs de plus en plus utilisé et sa popularité ne faiblit pas, bien au contraire.

Pourquoi tant de succès ? NGINX est nativement très performant et léger. Une fois que l’on connaît un peu plus le logiciel, il est possible de booster ses performances avec PHP par exemple. Je pense que je ferai prochainement un article complet sur le sujet. C’est bien sur un avis personnel, mais si vous commencez à vouloir installer des serveurs web, apprenez directement à vous servir de NGINX plutôt qu’Apache qui est clairement en perte de vitesse. Bon, on n’est pas là pour faire une étude de marché, mais pour parler technique. Aujourd’hui, nous allons voir comment faire des redirection 301 permanente à l’aide de NGINX, vous allez voir ce n’est pas très compliqué. Dans les exemples qui vont suivre, le site B est zonetuto.fr.

Rediriger toutes les URL du site A vers la racine du site B

Si votre besoin est de rediriger absolument toutes les URL d’un site A vers la racine d’un site B, l’instruction n’est pas très compliqué. Votre bloc server devrait alors ressembler à quelque chose comme ça :

server {
    listen 80;
    server_name sitea.com;
    return 301 http://zonetuto.fr/;
}

Dans cet exemple, le serveur écoute sur le port 80 pour les requêtes HTTP à destination de sitea.com. Toutes les requêtes sont redirigées en utilisant la directive return avec le code de réponse HTTP 301 (redirection permanente) et l’URL de destination qui est http://zonetuto.fr/. Cela redirigera donc toutes les pages de sitea.com vers la page d’accueil de zonetuto.fr.

Remplacer le nom de domaine et rediriger les URL du site A vers la même URL du site B

L’instruction, qui va suivre est par exemple utilisée pour la migration d’un nom de domaine vers un autre. Attention, ce n’est pas quelque chose qui se fait à la légère et je ferai sûrement un article plus complet. Il y a des précautions à prendre surtout sur un gros site en production depuis des années. Ici, c’est vraiment pour vous montrer le concept et comment faire le plus simplement possible. ZoneTuto.fr, c’est aussi mon carnet de notes donc si d’autres personnes peuvent en profiter alors c’est tant mieux.

Dans le cas où vous voudriez rediriger le visiteur du site A vers le site B en changeant seulement le nom de domaine, mais en gardant la même structure pour l’url, l’instruction est un petit peu plus compliquée. Vous pouvez mettre ceci dans le bloc server :

server {
    listen 80;
    server_name sitea.com;
    return 301 $scheme://zonetuto.fr$request_uri;
}

Dans ce second cas, sitea.com/urldefou redirigera vers zonetuto.fr/urldefou, sitea.com/contact redirigera vers zonetuto.fr/contact bref vous voyez le principe. Ainsi toutes les requêtes sont redirigées en utilisant la directive return avec le code de réponse HTTP 301 (redirection permanente). La variable $scheme correspond au schéma utilisé qui est HTTP ou HTTPS pour l’URL courante à rediriger. Enfin la variable $request_uri qui contient l’URI de la requête.

Voilà vous en savez maintenant un peu plus sur les redirections 301 avec NGINX. Finalement, en une seule ligne, on peut facilement rediriger une infinité d’URL ce qui est très pratique et léger. Encore une fois, c’est pour le cas général et dans votre cas particulier, il faudra parfois faire quelques ajustements. Je termine cet article en précisant que si votre site d’origine est en HTTPS, vous pouvez bien sûr placer cette directive de redirection dans votre bloc serveur qui écoute le port 443 :

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name sitea.fr;
    
    return 301 $scheme://zonetuto.fr$request_uri;

    #suite ...
}

Bonnes redirections 301 !

Laisser un commentaire