Après avoir installé votre certificat SSL, vous devez rediriger tout le trafic HTTP vers HTTPS. Sans redirection, les visiteurs accédant à http://votredomaine.com n’utiliseront pas la connexion chiffrée — même si HTTPS est disponible.
Utilisez une redirection 301 (permanente) pour que les moteurs de recherche transfèrent tous les signaux de classement vers l’URL HTTPS.
Nginx
Ajoutez un bloc server séparé pour le port 80 qui redirige tout :
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
Cela préserve le chemin URL complet : http://example.com/page?q=1 → https://example.com/page?q=1.
Après modification, testez et rechargez :
sudo nginx -t && sudo systemctl reload nginx
Apache
Option 1 : Redirection VirtualHost (recommandée)
Ajoutez à votre configuration Apache :
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://example.com/
</VirtualHost>
Option 2 : .htaccess (hébergement mutualisé)
Si vous n’avez pas accès à la configuration VirtualHost (hébergement mutualisé), ajoutez au .htaccess de votre site :
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Nécessite l’activation de mod_rewrite.
Après les modifications :
sudo apachectl configtest && sudo systemctl reload apache2
Vérifier la redirection
# Devrait retourner 301 avec Location: https://...
curl -I http://votredomaine.com
Sortie attendue :
HTTP/1.1 301 Moved Permanently
Location: https://votredomaine.com/
HSTS : le double verrouillage
Après avoir confirmé que votre redirection fonctionne, ajoutez HSTS (HTTP Strict Transport Security). Cela indique aux navigateurs d’toujours utiliser HTTPS, même si l’utilisateur tape http:// :
Nginx :
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
Apache :
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
Commencez avec un max-age court (par ex., 300 secondes) pour tester, puis augmentez à 2 ans (63072000) une fois que vous êtes sûr que tout fonctionne.
Avertissement : Une fois que HSTS est actif avec un long
max-age, les navigateurs refuseront de se connecter en HTTP même si vous supprimez HTTPS. Assurez-vous que votre configuration HTTPS est stable avant de définir une longue durée.
Modèles de redirection courants
Rediriger www vers non-www + HTTPS
# Nginx : www → non-www, HTTP + HTTPS → HTTPS
server {
listen 80;
listen 443 ssl;
server_name www.example.com;
ssl_certificate /etc/ssl/fullchain.pem;
ssl_certificate_key /etc/ssl/privkey.pem;
return 301 https://example.com$request_uri;
}
Rediriger non-www vers www + HTTPS
server {
listen 80;
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/fullchain.pem;
ssl_certificate_key /etc/ssl/privkey.pem;
return 301 https://www.example.com$request_uri;
}
Rediriger un ancien domaine entier
server {
listen 80;
listen 443 ssl;
server_name olddomain.com www.olddomain.com;
ssl_certificate /etc/ssl/old-fullchain.pem;
ssl_certificate_key /etc/ssl/old-privkey.pem;
return 301 https://newdomain.com$request_uri;
}
Vous avez aussi besoin d’un certificat SSL valide pour l’ancien domaine — les navigateurs doivent établir HTTPS avant de pouvoir recevoir la redirection. Utilisez un certificat SAN couvrant les deux domaines, ou un certificat séparé pour l’ancien domaine.
Dépannage
Boucle de redirection (ERR_TOO_MANY_REDIRECTS)
Cela signifie généralement que votre bloc serveur HTTPS redirige également vers HTTPS. Vérifiez que seul le bloc port 80 contient la redirection — le bloc port 443 devrait servir le contenu normalement.
Autre cause : un load balancer ou proxy (Cloudflare, AWS ALB) termine SSL et transmet HTTP à votre serveur. Votre serveur voit HTTP et redirige. Corrigez en vérifiant l’en-tête X-Forwarded-Proto :
# Derrière un proxy/load balancer
if ($http_x_forwarded_proto = "http") {
return 301 https://$host$request_uri;
}
Anciennes URL HTTP mises en cache dans les moteurs de recherche
Après avoir configuré les redirections, informez Google du changement :
- Mettez à jour
<link rel="canonical">pour utiliserhttps:// - Mettez à jour les URL de votre sitemap en
https:// - Dans Google Search Console, ajoutez la propriété HTTPS
Google mettra progressivement à jour les URL indexées en suivant les redirections 301.
Questions fréquemment posées
Dois-je rediriger www vers non-www (ou vice versa) en même temps ?
Oui. Choisissez une forme canonique et redirigez l’autre. Cela évite le contenu dupliqué dans les moteurs de recherche :
# Rediriger www vers non-www (Nginx)
server {
listen 80;
listen 443 ssl;
server_name www.example.com;
return 301 https://example.com$request_uri;
}
La redirection affectera-t-elle le SEO ?
Une redirection 301 transmet les signaux de classement à l’URL de destination. Google recommande les redirections 301 pour la migration HTTP vers HTTPS. Il peut y avoir une petite fluctuation temporaire, mais le SEO s’améliore à long terme grâce au signal de classement HTTPS.
Qu’en est-il du contenu mixte après la redirection ?
La redirection gère les URL de page, mais si votre HTML référence des ressources (images, scripts, CSS) avec des URL http://, les navigateurs les bloqueront ou afficheront des avertissements. Consultez notre guide de correction du contenu mixte.
Comment tester si ma redirection fonctionne correctement ?
# Vérifier la chaîne de redirection
curl -ILs http://votredomaine.com | grep -E '^HTTP|^Location'
Sortie attendue :
HTTP/1.1 301 Moved Permanently
Location: https://votredomaine.com/
HTTP/2 200
La première réponse devrait être 301 avec une Location HTTPS, et la réponse finale devrait être 200.
Dois-je rediriger au niveau DNS ou au niveau serveur ?
Au niveau serveur (configuration Nginx/Apache ou .htaccess). Les redirections au niveau DNS (comme les Page Rules de Cloudflare) fonctionnent mais ajoutent un saut réseau et vous donnent moins de contrôle sur le comportement de la redirection. Les redirections côté serveur sont plus rapides et plus fiables.