Configurer les redirections avec Nginx sur un serveur virtuel

Lorsque vous gérez un site web ou une application sur votre SDV, les redirections sont essentielles pour contrôler la façon dont le trafic circule entre les URL. Que vous passiez au HTTPS, que vous redirigiez un ancien domaine ou que vous nettoyiez des liens brisés, Nginx permet de gérer facilement et efficacement les redirections au niveau du serveur web.

Dans ce guide, nous verrons comment configurer différents types de redirections dans Nginx, y compris :

  • Redirections permanentes (301)

  • Redirections temporaires (302)

  • HTTP vers HTTPS

  • Non-www vers www (et vice versa)

  • Réécritures spécifiques au chemin d’accès

Conditions préalables

  • Un VPS avec Nginx installé

  • Accès root ou sudo

  • Le fichier de configuration de votre site (généralement dans /etc/nginx/sites-available/ ou /etc/nginx/conf.d/)

1. Redirection permanente (301)

À utiliser lorsqu’une URL ou un domaine a changé de façon permanente.

exemple : Redirection de l’ancien domaine vers le nouveau domaine

server {
listen 80;
server_name olddomain.com www.olddomain.com;
return 301 https://newdomain.com$request_uri;
}

🔐 Conseil : Redirigez toujours vers HTTPS lorsque c’est possible.

2. Redirection temporaire (302)

À utiliser pour une redirection temporaire (par exemple, lors d’une maintenance).

server {
listen 80;
server_name olddomain.com www.olddomain.com;
return 301 https://newdomain.com$request_uri;
}

3. Redirection HTTP vers HTTPS

Ceci est fortement recommandé pour le référencement et la sécurité.

server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}

Configurez ensuite votre bloc serveur HTTPS séparément :

server {
listen 443 ssl;
server_name example.com;
# SSL config here
}

4. Rediriger www vers non-www (ou inverser)

Choisissez une version préférée pour des raisons de cohérence et de référencement.

De www à non-www :

server {
listen 80;
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}

Ou de non-www à www :

server {
listen 80;
server_name example.com;
return 301 $scheme://www.example.com$request_uri;
}

5. Rediriger un chemin spécifique

Exemple : Rediriger /blog vers /articles :

location = /blog {
return 301 /articles ;
}

Ou avec l’URL complète :

location = /blog {
return 301 https://example.com/articles;
}

Où placer ces directives

Toutes les directives ci-dessus doivent être placées dans le bloc serveur approprié dans le fichier de configuration de votre site :

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

Ensuite, créez un lien symbolique vers sites-enabled si nécessaire :

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Après la mise à jour des configurations

Testez toujours votre configuration Nginx avant de la recharger :

sudo nginx -t

S’il n’y a pas d’erreur :

sudo systemctl reload nginx

Bonus : Rediriger toutes les erreurs 404 vers la page d’accueil

error_page 404 =301 / ;

Placez ceci à l’intérieur de votre bloc serveur pour gérer les liens brisés de manière élégante.

Nginx n’est pas seulement un serveur web très performant, c’est aussi un outil puissant pour contrôler le trafic et l’expérience utilisateur grâce à des redirections intelligentes. Avec seulement quelques lignes de configuration, vous pouvez appliquer le protocole HTTPS, guider les utilisateurs vers les bonnes URL et optimiser votre site pour le référencement et la sécurité.