Configuration des redirections avec Nginx sur VPS : Un guide complet de configuration
Les redirections sont un composant fondamental de toute infrastructure web bien gérée. Que vous restructuriez votre site web, migriez vers un nouveau domaine ou routiez temporairement le trafic pendant la maintenance, les redirections correctement configurées protègent vos classements SEO, préservent l’équité des liens et garantissent que les visiteurs atterrissent toujours sur la bonne page. Nginx — l’un des serveurs web les plus puissants et les plus utilisés au monde — rend la mise en œuvre des redirections à la fois flexible et efficace.
Ce guide complet vous guide à travers tout ce que vous devez savoir sur la configuration des redirections HTTP à l’aide de Nginx dans un environnement VPS Hosting, de la compréhension des types de redirections au test et à la vérification de votre configuration en production.
1. Comprendre les redirections HTTP
Avant de toucher à un seul fichier de configuration, il est important de comprendre ce que font réellement les redirections et pourquoi le choix du type correct est important — en particulier pour le SEO.
Une redirection HTTP est une réponse du serveur qui demande au client (généralement un navigateur Web ou un crawler) de naviguer vers une URL différente de celle initialement demandée. Le serveur communique cette instruction en utilisant un code de statut HTTP 3xx, et le code spécifique que vous choisissez a des implications importantes pour l’expérience utilisateur et le comportement des moteurs de recherche.
Les types de redirection les plus courants
| Type de redirection | Code de statut | Cas d’usage | Transmet l’équité de lien ? |
|---|---|---|---|
| Redirection permanente | 301 | La ressource a été déplacée de manière permanente | ✅ Oui |
| Redirection temporaire | 302 | Ressource temporairement indisponible | ❌ Non |
| Redirection temporaire (méthode sûre) | 307 | Déplacement temporaire, préserve la méthode HTTP | ❌ Non |
| Redirection permanente (méthode sûre) | 308 | Déplacement permanent, préserve la méthode HTTP | ✅ Oui |
Redirection permanente 301
La redirection 301 est le type de redirection le plus critique pour le SEO. Elle signale aux moteurs de recherche qu’une ressource a été déplacée de manière permanente vers une nouvelle URL, transférant l’équité de lien accumulée de la page d’origine (également appelée « link juice ») vers la destination. Utilisez-la lors du renommage permanent d’URL, de la consolidation de contenu en double ou de la migration vers un nouveau domaine.
Redirection temporaire 302
Une redirection 302 indique aux navigateurs et aux crawlers que le déplacement est temporaire et que l’URL d’origine sera éventuellement restaurée. Parce que les moteurs de recherche interprètent cela comme transitoire, ils ne transfèrent pas l’équité de lien vers l’URL de destination. Utilisez-la pour les tests A/B, les pages de maintenance temporaires ou les redirections promotionnelles à court terme.
Redirection temporaire 307
La redirection 307 se comporte de manière similaire à une 302 mais avec une différence critique : elle préserve explicitement la méthode de requête HTTP d’origine. Si un client envoie une requête POST à une URL qui retourne une 307, le client doit répéter la POST vers la nouvelle URL plutôt que de passer par défaut à une GET. C’est important pour les points de terminaison API et les soumissions de formulaires.
Redirection permanente 308
La redirection 308 est l’équivalent permanent de 307 — elle signale un déplacement permanent tout en préservant également la méthode de requête HTTP. Elle est moins couramment utilisée que 301 mais précieuse dans les environnements riches en API.
2. Prérequis : Accéder à votre VPS via SSH
Pour configurer les redirections Nginx, vous avez besoin d’un accès en ligne de commande à votre serveur. Si vous exécutez un environnement VPS Hosting basé sur Linux, cela signifie se connecter via SSH.
Étape 1 : Ouvrez votre terminal et connectez-vous
Sur Linux ou macOS, ouvrez votre terminal. Sur Windows, utilisez un client comme PuTTY ou le Terminal Windows intégré avec support OpenSSH.
ssh username@your_server_ipRemplacez username par votre utilisateur système réel (par exemple, root ou un utilisateur activé pour sudo) et your_server_ip par l’adresse IP publique de votre VPS.
Exemple :
ssh admin@203.0.113.45Une fois connecté, confirmez que Nginx est installé et en cours d’exécution :
sudo systemctl status nginxVous devriez voir une sortie indiquant que le service est actif (en cours d’exécution). Si Nginx n’est pas encore installé, vous pouvez l’installer avec :
# On Ubuntu/Debian
sudo apt update && sudo apt install nginx -y
# On CentOS/RHEL/AlmaLinux
sudo dnf install nginx -y3. Localisation et compréhension des fichiers de configuration Nginx
Nginx utilise une structure de configuration hiérarchique. Comprendre où se trouvent les fichiers est essentiel avant d’apporter des modifications.
Chemins de configuration par défaut
| Chemin | Objectif |
|---|---|
/etc/nginx/nginx.conf | Fichier de configuration principal Nginx |
/etc/nginx/sites-available/ | Configurations d’hôtes virtuels disponibles |
/etc/nginx/sites-enabled/ | Configurations actives liées symboliquement |
/etc/nginx/conf.d/ | Fichiers de configuration supplémentaires (style CentOS/RHEL) |
Sur les systèmes Ubuntu/Debian, l’approche recommandée est de créer des fichiers de configuration individuels dans /etc/nginx/sites-available/ puis de les activer en créant des liens symboliques dans /etc/nginx/sites-enabled/.
Sur les systèmes CentOS/RHEL/AlmaLinux, les configurations se trouvent généralement dans /etc/nginx/conf.d/.
Ouverture d’un fichier de configuration
Pour modifier la configuration d’un domaine spécifique :
sudo nano /etc/nginx/sites-available/example.comSi le fichier n’existe pas encore, cette commande le créera. Vous pouvez également utiliser vim ou tout autre éditeur de texte que vous préférez.
4. Configuration des redirections dans Nginx
Nginx gère les redirections principalement via deux directives : return et rewrite. La directive return est plus simple, plus rapide et recommandée pour la plupart des scénarios de redirection. La directive rewrite offre plus de puissance pour les redirections complexes basées sur des motifs.
Méthode 1 : Utiliser la directive return (Recommandée)
La directive return arrête le traitement et retourne immédiatement le code de statut HTTP et l’URL spécifiés au client. C’est l’approche la plus efficace pour les redirections simples.
Configuration d’une redirection permanente 301 (URL unique)
server {
listen 80;
server_name example.com www.example.com;
location /old-page {
return 301 https://example.com/new-page;
}
}Dans cette configuration, toute requête vers http://example.com/old-page sera redirigée de manière permanente vers https://example.com/new-page. Les moteurs de recherche mettront à jour leurs index pour refléter la nouvelle URL et transféreront l’équité des liens en conséquence.
Configuration d’une redirection temporaire 302
server {
listen 80;
server_name example.com;
# Temporary redirect during maintenance
location /promo-page {
return 302 https://example.com/temporary-landing;
}
}Cette configuration redirige temporairement les visiteurs de /promo-page vers /temporary-landing sans affecter les signaux SEO de l’URL d’origine.
Redirection d’un domaine entier (non-WWW vers WWW)
Un cas d’usage très courant est l’application d’un domaine canonique — par exemple, rediriger tout le trafic http://example.com vers https://www.example.com :
server {
listen 80;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen 443 ssl;
server_name www.example.com;
# SSL configuration here
# ...
}La variable $request_uri préserve le chemin d’accès et la chaîne de requête d’origine, donc http://example.com/blog/post-1?ref=newsletter redirige correctement vers https://www.example.com/blog/post-1?ref=newsletter.
Redirection de HTTP vers HTTPS (application du SSL)
L’application du HTTPS est une bonne pratique de sécurité et un signal de classement confirmé par Google. Une fois que vous avez un Certificat SSL installé sur votre serveur, configurez la redirection comme suit :
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# Your site configuration continues here
root /var/www/example.com/html;
index index.html index.php;
}Cette configuration capture tout le trafic HTTP sur le port 80 et émet une redirection 301 vers l’équivalent HTTPS, garantissant que tous les visiteurs et les robots utilisent la version sécurisée de votre site.
Redirection d’un ancien domaine entier vers un nouveau domaine
Lors de la migration de votre site web vers un domaine complètement nouveau, utilisez le motif suivant :
server {
listen 80;
listen 443 ssl;
server_name old-domain.com www.old-domain.com;
ssl_certificate /etc/letsencrypt/live/old-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/old-domain.com/privkey.pem;
return 301 https://new-domain.com$request_uri;
}Cela préserve le chemin d’accès complet de l’URL lors de la migration du domaine, ce qui est essentiel pour maintenir vos classements SEO. Si vous avez besoin d’enregistrer un nouveau domaine pour votre projet, AlexHost propose des services abordables d’Enregistrement de domaine.
Méthode 2 : Utiliser la directive rewrite (Redirections basées sur des motifs)
La directive rewrite utilise des expressions régulières pour faire correspondre et transformer les URL. Elle est plus puissante mais aussi plus gourmande en ressources que return. Utilisez-la lorsque vous avez besoin de rediriger plusieurs motifs d’URL avec une seule règle.
Syntaxe de base rewrite
rewrite regex replacement [flag];Drapeaux :
last — Arrête le traitement des directives rewrite actuelles et commence une nouvelle recherche de localisation
break — Arrête le traitement des directives de réécriture dans le bloc actuel
redirect — Retourne une redirection temporaire 302
permanent — Retourne une redirection permanente 301
Redirection d’URL avec un motif
Supposons que vous restructuriez votre blog et ayez besoin de rediriger toutes les URL de /blog/YYYY/MM/post-slug vers /articles/post-slug :
server {
listen 80;
server_name example.com;
rewrite ^/blog/[0-9]{4}/[0-9]{2}/(.*)$ /articles/$1 permanent;
}
Cette règle unique gère la restructuration complète des URL du blog, en capturant le slug de l’article et en l’insérant dans le nouveau motif d’URL.
Redirection de plusieurs URL spécifiques
Pour un petit nombre de changements d’URL spécifiques, l’utilisation de plusieurs directives return dans des blocs location séparés est plus propre et plus performante :
server {
listen 80;
server_name example.com;
location = /about-us {
return 301 /about;
}
location = /services/web-design {
return 301 /services/web-development;
}
location = /contact-form {
return 301 /contact;
}
}
Le modificateur = dans location effectue une correspondance exacte, qui est le type de correspondance le plus rapide dans Nginx.
Méthode 3 : Redirection basée sur les chaînes de requête
Nginx ne correspond pas nativement aux chaînes de requête dans les blocs location, mais vous pouvez utiliser la variable $arg_ ou les directives if pour les redirections basées sur les chaînes de requête :
server {
listen 80;
server_name example.com;
location /page {
if ($arg_id = "123") {
return 301 /new-page-123;
}
if ($arg_id = "456") {
return 301 /new-page-456;
}
}
}
> Remarque : Bien que les directives if fonctionnent pour les cas simples, elles peuvent causer un comportement inattendu dans les configurations complexes. La communauté Nginx fait souvent référence à ce problème comme le problème « if is evil ». À utiliser avec prudence et à tester en détail.
5. Scénarios de Redirection Avancés
Redirection d’un Sous-Répertoire vers un Autre Domaine
server {
listen 80;
server_name example.com;
location /shop/ {
return 301 https://shop.example.com$request_uri;
}
}
Suppression des Barres Obliques Finales
Les barres obliques finales incohérentes peuvent créer des problèmes de contenu dupliqué. Pour canonicaliser les URL en supprimant les barres obliques finales :
server {
listen 80;
server_name example.com;
rewrite ^/(.*)/$ /$1 permanent;
}
Ajout de Barres Obliques Finales aux URL de Répertoire
Inversement, si votre CMS ou application nécessite des barres obliques finales :
server {
listen 80;
server_name example.com;
location ~ ^(/[^.]*[^/])$ {
return 301 $1/;
}
}
Redirections Basées sur la Géolocalisation Utilisant GeoIP
Pour les sites web desservant plusieurs régions, vous pouvez rediriger les utilisateurs en fonction de leur localisation géographique en utilisant ngx_http_geoip_module :
geoip_country /usr/share/GeoIP/GeoIP.dat;
server {
listen 80;
server_name example.com;
if ($geoip_country_code = "DE") {
return 302 https://de.example.com$request_uri;
}
if ($geoip_country_code = "FR") {
return 302 https://fr.example.com$request_uri;
}
}
6. Test de votre configuration Nginx
N’appliquez jamais les modifications à un serveur de production sans les tester d’abord. Une erreur de syntaxe dans votre configuration Nginx peut mettre votre site web entièrement hors ligne.
Étape 1 : Valider la syntaxe de la configuration
sudo nginx -t
Résultat attendu pour une configuration valide :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Si vous voyez des erreurs, Nginx signalera le fichier spécifique et le numéro de ligne où le problème a été détecté, ce qui facilite le débogage.
Étape 2 : Recharger Nginx pour appliquer les modifications
Une fois le test de configuration réussi, rechargez Nginx gracieusement (sans interrompre les connexions actives) :
sudo systemctl reload nginx
Vous pouvez également effectuer un redémarrage complet (qui interrompt brièvement les connexions actives) :
sudo systemctl restart nginx
Pour la plupart des modifications de redirection, reload est suffisant et préféré.
7. Vérification que vos redirections fonctionnent correctement
Après avoir appliqué votre configuration, vérifiez que les redirections se comportent exactement comme prévu avant de considérer la tâche comme terminée.
Méthode 1 : Test dans le navigateur
Ouvrez votre navigateur et accédez à l’ancienne URL. Observez si vous êtes correctement redirigé vers la nouvelle destination. Pour plus de détails, ouvrez Developer Tools (F12), accédez à l’onglet Network, et rechargez la page. Vous verrez la chaîne de redirection complète, y compris les codes de statut retournés à chaque étape.
Méthode 2 : Utilisation de curl depuis la ligne de commande
La commande curl est le moyen le plus fiable de tester les redirections sans que la mise en cache du navigateur n’interfère :
curl -I http://example.com/old-page
Le drapeau -I récupère uniquement les en-têtes de réponse HTTP. Recherchez l’en-tête Location et le code de statut dans la réponse :
HTTP/1.1 301 Moved Permanently
Server: nginx/1.24.0
Date: Mon, 01 Jan 2024 12:00:00 GMT
Content-Type: text/html
Location: https://example.com/new-page
Connection: keep-alive
Pour suivre automatiquement la chaîne de redirection complète :
curl -IL http://example.com/old-page
Le drapeau -L demande à curl de suivre les redirections, et combiné avec -I, il affiche les en-têtes à chaque étape de la chaîne.
Méthode 3 : Outils de vérification de redirection en ligne
Plusieurs outils en ligne gratuits peuvent visualiser vos chaînes de redirection et identifier les problèmes tels que les boucles de redirection ou les sauts de redirection excessifs :
Redirect Checker (redirect-checker.org)
httpstatus.io
Screaming Frog SEO Spider (application de bureau, gratuit jusqu’à 500 URL)
Vérification des boucles de redirection
Une boucle de redirection se produit lorsque l’URL A redirige vers l’URL B, qui redirige à son tour vers l’URL A (ou via une chaîne plus longue qui finit par boucler). Cela provoque l’affichage d’une erreur par les navigateurs comme *"ERR_TOO_MANY_REDIRECTS"*.
Pour détecter les boucles avec curl :
curl -IL --max-redirs 10 http://example.com/old-page
Si curl atteint la limite maximale de redirection, vous avez une boucle. Examinez attentivement votre configuration pour vous assurer qu’aucun chemin de redirection circulaire n’existe.
8. Erreurs courantes de redirection et comment les éviter
Erreur 1 : Utiliser 302 au lieu de 301
C’est l’erreur SEO la plus courante avec les redirections. Si un changement d’URL est permanent, utilisez toujours 301. Utiliser 302 par accident signifie que les moteurs de recherche ne transféreront pas l’équité des liens et continueront à indexer l’ancienne URL.
Erreur 2 : Chaînes de redirection
Évitez de chaîner les redirections inutilement (par exemple, A → B → C → D). Chaque saut supplémentaire ajoute de la latence et dilue la valeur SEO transmise à travers la chaîne. Auditez régulièrement vos redirections et mettez-les à jour pour qu’elles pointent directement vers la destination finale.
Erreur 3 : Ne pas préserver les chaînes de requête
Lors de la redirection de domaines ou de répertoires entiers, incluez toujours $request_uri ou $query_string dans votre cible de redirection pour éviter de supprimer les paramètres d’URL importants.
Incorrect :
return 301 https://new-domain.com;
Correct :
return 301 https://new-domain.com$request_uri;
Erreur 4 : Oublier de gérer HTTP et HTTPS
Si votre site utilise à la fois HTTP et HTTPS, assurez-vous que vos règles de redirection tiennent compte des deux protocoles, sinon vous risquez d’obtenir un comportement incohérent.
Erreur 5 : Ne pas tester après les modifications
Exécutez toujours sudo nginx -t avant de recharger, et vérifiez toujours les redirections avec curl après avoir appliqué les modifications. Quelques secondes de test peuvent éviter des heures de dépannage.
9. Redirections Nginx vs. Redirections .htaccess
Si vous migrez d’un environnement d’hébergement basé sur Apache vers Nginx sur un VPS, vous êtes peut-être habitué à gérer les redirections via des fichiers .htaccess. Il est important de comprendre que Nginx ne supporte pas les fichiers .htaccess. Toute la logique de redirection doit être placée directement dans les fichiers de configuration du bloc serveur Nginx.
C’est en fait un avantage : Nginx n’a pas besoin de lire les fichiers .htaccess à chaque requête, ce qui contribue à ses performances supérieures par rapport à Apache dans de nombreux scénarios.
Si vous préférez une expérience de panneau de contrôle géré pour votre VPS, AlexHost propose des VPS avec cPanel et une gamme de Panneaux de Contrôle VPS qui fournissent des interfaces graphiques pour gérer les redirections et autres configurations serveur sans éditer directement les fichiers de configuration.
10. Meilleures pratiques SEO pour les redirections Nginx
Les redirections correctement configurées sont un élément critique du SEO technique. Voici les principes clés à suivre :
Utiliser les redirections 301 pour les modifications permanentes
Chaque fois que vous modifiez définitivement une URL — que ce soit en renommant une page, en restructurant l’architecture de votre site ou en migrant des domaines — utilisez une redirection 301. Cela garantit que Google et les autres moteurs de recherche mettent à jour leurs index et transfèrent la puissance de classement de l’ancienne URL vers la nouvelle.
Minimiser les chaînes de redirection
Les crawlers de Google suivent les chaînes de redirection, mais chaque saut consomme le budget de crawl et dilue légèrement le PageRank. Gardez vos chaînes de redirection aussi courtes que possible — idéalement un seul saut de l’ancienne URL vers la destination finale.
Mettre à jour les liens internes
Les redirections sont un filet de sécurité, pas un substitut à une liaison interne propre. Après avoir implémenté les redirections, mettez à jour vos liens internes pour qu’ils pointent directement vers les nouvelles URLs. Cela réduit la charge du serveur et garantit que les crawlers consacrent leur budget au contenu plutôt que de suivre les redirections.
Soumettre un plan du site mis à jour
Après des modifications d’URL importantes, mettez à jour votre sitemap XML pour refléter les nouvelles URLs et soumettez-le à nouveau via Google Search Console. Cela accélère le processus de réindexation.
Surveiller avec Google Search Console
Après avoir implémenté les redirections, surveillez Google Search Console pour les erreurs de crawl, les problèmes de couverture et toute baisse inattendue des impressions ou des clics. Les problèmes de redirection apparaissent souvent dans les jours suivant la mise en œuvre.
Conclusion
Maîtriser la configuration des redirections Nginx est une compétence essentielle pour tout administrateur système ou propriétaire de site web exécutant un VPS. Que vous appliquiez HTTPS, consolidiez des URL en double, migriez vers un nouveau domaine ou restructuriez l’architecture de votre site, Nginx fournit les outils pour gérer chaque scénario efficacement et de manière fiable.
Les points clés de ce guide :
Choisissez le bon type de redirection : 301 pour les déplacements permanents (critiques pour le SEO), 302/307 pour les déplacements temporaires
Utilisez la directive return pour les redirections simples — c’est plus rapide et plus propre que rewriterewrite pour les transformations d’URL complexes basées sur des motifssudo nginx -t avant de recharger, et vérifiez avec curl -IL après$request_uri lors de la redirection de domaines ou de répertoires entiersSi vous recherchez un environnement fiable et haute performance pour exécuter votre serveur Nginx, explorez les plans VPS Hosting d’AlexHost — conçus pour la vitesse, la sécurité et l’accès root complet afin que vous ayez un contrôle total sur la configuration de votre serveur.
sur tous les services d'hébergement