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 lors d’une maintenance, les redirections correctement configurées protègent vos classements SEO, préservent l’équité des liens et garantissent que les visiteurs arrivent 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 redirection 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 bon type 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’utilisation | Transmet l’équité des liens ? |
|---|---|---|---|
| Redirection permanente | 301 | La ressource a été déplacée de manière permanente | ✅ Oui |
| Redirection temporaire | 302 | La ressource est 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é des liens accumulée par la page d’origine (également appelée « jus de lien ») 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é des liens 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 vers 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 : Ouvrir votre terminal et vous connecter
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. Localiser et comprendre les fichiers de configuration Nginx
Nginx utilise une structure de configuration hiérarchique. Comprendre où les fichiers se trouvent est essentiel avant d’apporter des modifications.
Chemins de configuration par défaut
| Chemin | Objectif |
|---|---|
/etc/nginx/nginx.conf | Fichier de configuration principal de 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/.
Ouvrir un fichier de configuration
Pour éditer 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 spécifié et l’URL 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 sur l’URL d’origine.
#### Redirection d’un domaine entier (non-WWW vers WWW)
Un cas d’utilisation 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 crawlers 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 devez 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 correspondre et transformer les URL. Elle est plus puissante mais aussi plus gourmande en ressources que return. Utilisez-la lorsque vous devez 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 directivesrewriteactuelles et commence une nouvelle recherche de localisationbreak— Arrête le traitement des directives de réécriture dans le bloc actuelredirect— Retourne une redirection temporaire 302permanent— 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 seule règle gère la restructuration complète de l’URL du blog, capturant le slug du post et 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 se réfère souvent à cela comme le problème « if is evil ». Utilisez avec prudence et testez complètement.
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 en double. 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épertoires
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 à l’aide de GeoIP
Pour les sites web desservant plusieurs régions, vous pouvez rediriger les utilisateurs en fonction de leur localisation géographique en utilisant le 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
Ne jamais appliquer des modifications à un serveur de production sans les tester d’abord. Une erreur de syntaxe dans votre configuration Nginx peut mettre votre site web entier hors ligne.
Étape 1 : Valider la syntaxe de la configuration
sudo nginx -tSortie attendue pour une configuration valide :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulSi 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 rend le débogage simple.
Étape 2 : Recharger Nginx pour appliquer les modifications
Une fois le test de configuration réussi, rechargez Nginx avec grâce (sans interrompre les connexions actives) :
sudo systemctl reload nginxAlternativement, pour un redémarrage complet (qui interrompt brièvement les connexions actives) :
sudo systemctl restart nginxPour la plupart des changements 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 les Outils de développement (F12), accédez à l’onglet Réseau 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-pageLe 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-alivePour suivre automatiquement la chaîne de redirection complète :
curl -IL http://example.com/old-pageLe 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 gratuits en ligne 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 vers l’URL A (ou via une chaîne plus longue qui finit par boucler). Cela amène les navigateurs à afficher une erreur comme *« ERR_TOO_MANY_REDIRECTS »*.
Pour détecter les boucles avec curl :
curl -IL --max-redirs 10 http://example.com/old-pageSi 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. L’utilisation accidentelle de 302 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 par la chaîne. Auditez régulièrement vos redirections et mettez-les à jour pour pointer directement vers la destination finale.
Erreur 3 : Ne pas préserver les chaînes de requête
Lors de la redirection de domaines entiers ou de répertoires, 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 sert à la fois HTTP et HTTPS, assurez-vous que vos règles de redirection tiennent compte des deux protocoles, sinon vous pourriez vous retrouver avec 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 prévenir 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 à sa performance supérieure 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 un VPS avec cPanel et une gamme de panneaux de contrôle VPS qui fournissent des interfaces graphiques pour gérer les redirections et d’autres configurations de serveur sans éditer directement les fichiers de configuration.
10. Meilleures pratiques SEO pour les redirections Nginx
Les redirections correctement configurées sont un composant critique du SEO technique. Voici les principes clés à suivre :
Utiliser les redirections 301 pour les modifications permanentes
Chaque fois que vous modifiez de manière permanente 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è
