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 desites-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
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 !