SSL & HTTPS pour WordPress

Configuration HTTPS complète et résolution des problèmes de mixed content.

Forcer HTTPS dans wp-config.php

define( 'FORCE_SSL_ADMIN', true );
define( 'WP_HOME',    'https://votre-site.com' );
define( 'WP_SITEURL', 'https://votre-site.com' );

Redirection .htaccess (Apache)

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Configuration Nginx

server {
    listen 80;
    server_name votre-site.com www.votre-site.com;
    return 301 https://votre-site.com$request_uri;
}

server {
    listen 443 ssl http2;
    ssl_certificate     /etc/letsencrypt/live/votre-site.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/votre-site.com/privkey.pem;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         HIGH:!aNULL:!MD5;
}

Corriger le mixed content

# Via WP-CLI — Search & Replace en base de données
wp search-replace 'http://votre-site.com' 'https://votre-site.com' --all-tables
ℹ️
Let's Encrypt — Certificat gratuit, renouvellement automatique via Certbot : certbot --nginx -d votre-site.com

HSTS (sécurité avancée)

Ajoutez ce header pour forcer HTTPS même si le visiteur tape http:// :

# Dans la config Nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

# Dans .htaccess (Apache)
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

Sur cette page