Redirections HTTP dans Nginx

Un guide complet pour configurer les redirections dans Nginx.

Les redirections HTTP indiquent aux navigateurs et aux robots des moteurs de recherche de passer d'une URL à une autre. Elles interviennent dans de nombreuses situations : migration vers un nouveau domaine, forçage du HTTPS, restructuration des URL, consolidation de contenus dupliqués, et bien d'autres cas. Bien configurées, les redirections préservent votre positionnement dans les moteurs de recherche et évitent aux utilisateurs de tomber sur des pages mortes.

Nginx gère les redirections via le module intégré ngx_http_rewrite_module, installé par défaut.

Comment l'utiliser ?

Un VPS ou un serveur dédié vous donne un contrôle total sur votre configuration Nginx — vous pouvez mettre en place n'importe quelle logique de redirection, la tester et l'ajuster rapidement.

Où configurer les redirections

Les redirections Nginx se définissent dans les fichiers de configuration du serveur :

  • /etc/nginx/nginx.conf — le fichier de configuration principal
  • /etc/nginx/sites-available/site_name — la configuration propre à chaque site
  • /etc/nginx/sites-enabled/ — les liens symboliques vers les configurations actives issues de sites-available

Apportez vos modifications dans sites-available, puis validez toujours la syntaxe avant de recharger :

nginx -t

Redirection 301 de www vers non-www

server {
    listen 80;
    server_name www.domain.com;
    rewrite ^ http://domain.com$request_uri? permanent;
}

server {
    listen 80;
    server_name domain.com;
    ...
}

Redirection 301 de non-www vers www

server {
    listen 80;
    server_name domain.com;
    rewrite ^ http://www.domain.com$request_uri? permanent;
}

server {
    listen 80;
    server_name www.domain.com;
    ...
}

Redirection 301 de HTTPS vers HTTP

server {
    listen 443;
    server_name www.domain.com;
    rewrite ^ http://www.domain.com$request_uri? permanent;
}

server {
    listen 80;
    server_name www.domain.com;
    ...
}

Redirection 301 de HTTP vers HTTPS

Pour un nouveau domaine :

server {
    listen SERVER_IP:80;
    server_name www.domain.com;
    rewrite ^ https://www.domain.com$request_uri? permanent;
}

server {
    listen SERVER_IP:443 ssl;
    server_name www.domain.com;
    ...
}

Pour un domaine existant :

server {
    listen SERVER_IP:80;
    server_name www.domain.com;
    rewrite ^ https://www.domain.com$request_uri? permanent;
}

Rediriger une page spécifique vers une nouvelle URL

server {
    ...
    if ($request_filename ~ oldpage/) {
        rewrite ^ http://www.domain.com/newpage/? permanent;
    }
    ...
}

Redirection 301 pour un répertoire entier

server {
    ...
    if ($request_filename ~ oldfolder/.+) {
        rewrite ^(.*) http://www.domain.com/newfolder/$1 permanent;
    }
    ...
}

Nos produits et services

Hébergement webFonctionne sur des disques NVMe ultra-rapides. Convient aux sites de toute complexité.
Commande
VPSInfrastructure cloud flexible avec accès root complet.
Commande
Serveurs dédiésServeurs physiques pour une performance maximale.
Commande

Redirection 301 d'un domaine vers un autre

server {
    server_name domain.com www.old-domain.com;
    rewrite ^ $scheme://www.new-domain.com;
}

Supprimer les slashs de fin d'URL

server {
    ...
    rewrite ^/(.*)/$ /$1 permanent;
    ...
}

location ~ .+/$ {
    rewrite (.+)/$ $1 permanent;
}

Redirection depuis index.php

if ($request_uri ~* "^(.*/)index\.phpquot;) {
    return 301 $1;
}

Corriger les doubles slashs (//) dans les URL

merge_slashes off;

location ~* "//" {
    rewrite ^(.*)//(.*)$ $1/$2;
    rewrite ^ $uri permanent;
}

Après toute modification, rechargez Nginx pour appliquer les changements :

service nginx restart

Aide

Une question ou besoin d'un coup de main ? Écrivez-nous via le système de tickets — nous sommes toujours là pour vous aider !

Besoin d’aide?Nos ingénieurs vous aideront gratuitement pour n’importe quelle question en quelques minutesNous contacter