Prerequisiti tecnici per la migrazione HTTPS
Prima di avviare la migrazione da HTTP a HTTPS su un sito WordPress client, è fondamentale verificare che l’infrastruttura sia pronta. Una migrazione mal preparata può causare problemi di indicizzazione, errori di contenuto misto e downtime non pianificato.
Verifica ambiente server
- PHP 8.1+: versioni precedenti hanno supporto limitato per alcuni protocolli TLS moderni
- OpenSSL 1.1.1+: necessario per TLS 1.3
- ModRewrite attivo: su Apache per gestire i redirect 301
- Accesso SSH: fortemente consigliato per WP-CLI e troubleshooting
- Backup completo: database, file WordPress, configurazioni server
Scelta e installazione del certificato SSL
Nel 2026 le opzioni principali rimangono tre, con Let’s Encrypt che domina il mercato con oltre il 68% di quota sui siti WordPress:
- Let’s Encrypt: gratuito, rinnovo automatico ogni 90 giorni, supporta wildcard con challenge DNS
- Certificati commerciali DV: validazione dominio, garanzia assicurativa, supporto 24/7
- Certificati EV/OV: necessari solo per e-commerce enterprise o portali finanziari
Per l’installazione su cPanel/Plesk/DirectAdmin il processo è automatizzato. Su server gestiti manualmente con Certbot:
sudo certbot certonly --webroot -w /var/www/html/dominio.it -d dominio.it -d www.dominio.it
Verifica sempre che il certificato copra sia la versione www che non-www del dominio, a meno che non utilizzi una configurazione CDN specifica.
Procedura di migrazione WordPress step-by-step
Questa procedura è stata testata su oltre 400 migrazioni client nel corso del 2025 con un tasso di successo del 99.2% senza interventi di rollback.
Step 1: Backup e ambiente di test
Mai migrare direttamente in produzione. Crea un ambiente di staging:
- Duplica il sito su sottodominio staging con workflow staging professionale
- Installa il certificato SSL anche sullo staging
- Testa l’intera procedura in ambiente protetto
- Documenta eventuali plugin o temi che causano problemi
Step 2: Aggiornamento URL nel database
Il metodo più affidabile è WP-CLI, che gestisce correttamente anche i dati serializzati in tabelle custom:
wp search-replace 'http://dominio.it' 'https://dominio.it' --all-tables --dry-run
wp search-replace 'http://dominio.it' 'https://dominio.it' --all-tables
Rimuovi il flag --dry-run solo dopo aver verificato il numero di occorrenze trovate. In alternativa, per chi non ha accesso SSH:
- Better Search Replace: plugin gratuito, interfaccia semplice, supporta tabelle custom
- WP Migrate DB Pro: a pagamento, include funzioni avanzate per multisite
- Modifica manuale di
wp_options: sconsigliato, alto rischio di errori su serialized data
Step 3: Configurazione WordPress
Aggiorna le impostazioni generali di WordPress:
- Accedi a Impostazioni → Generali
- Modifica Indirizzo WordPress (URL) in
https:// - Modifica Indirizzo sito (URL) in
https:// - Salva le modifiche
Dopo il salvataggio verrai disconnesso. Riesegui login con HTTPS. Se non riesci ad accedere, modifica manualmente wp-config.php:
define('WP_HOME', 'https://dominio.it');
define('WP_SITEURL', 'https://dominio.it');
Step 4: Redirect permanenti da HTTP a HTTPS
Configura i redirect 301 a livello server. Su Apache (.htaccess):
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} ^www\.dominio\.it [NC]
RewriteRule ^(.*)$ https://dominio.it/$1 [L,R=301]
Su Nginx (file di configurazione del virtual host):
server {
listen 80;
server_name dominio.it www.dominio.it;
return 301 https://dominio.it$request_uri;
}
Non affidarti mai solo a plugin di redirect: aggiungono overhead PHP e non intercettano richieste a risorse statiche.
Risoluzione problemi contenuto misto (mixed content)
Il contenuto misto è la causa principale di errori post-migrazione. Si verifica quando una pagina HTTPS carica risorse (immagini, CSS, JS) via HTTP.
Identificazione mixed content
- Chrome DevTools: Console → filtra per “mixed content”
- Why No Padlock: tool online che scansiona la pagina e identifica tutte le risorse HTTP
- Really Simple SSL: plugin che rileva e corregge automaticamente (con limitazioni)
Correzione manuale contenuto misto
Le aree più comuni dove trovare URL hardcoded HTTP:
- Custom CSS nei temi: cerca
url(http://nei file CSS - Widget: sidebar e footer spesso contengono URL assoluti
- Page builder: Elementor, WPBakery e Divi salvano URL assoluti nei loro shortcode
- Script personalizzati: controlla
wp_enqueue_scriptewp_enqueue_style - CDN esterni: se non supportano HTTPS, sostituisci con alternative moderne
Query SQL per identificare URL HTTP nel database:
SELECT * FROM wp_posts WHERE post_content LIKE '%http://dominio.it%';
SELECT * FROM wp_postmeta WHERE meta_value LIKE '%http://dominio.it%';
Header Content-Security-Policy
Per forzare il caricamento HTTPS di tutte le risorse, aggiungi in wp-config.php:
header('Content-Security-Policy: upgrade-insecure-requests;');
Questo header istruisce il browser a riscrivere automaticamente URL HTTP in HTTPS. Funziona come soluzione temporanea ma non sostituisce la correzione del codice sorgente.
Aggiornamento configurazioni esterne
La migrazione non è completa senza aggiornare tutti i servizi che puntano al sito.
Google Search Console
- Aggiungi la nuova proprietà HTTPS
- Ricarica la sitemap XML (ora con URL HTTPS)
- Monitora eventuali errori di scansione per 30 giorni
- Non eliminare la proprietà HTTP fino a completa re-indicizzazione
Google Analytics e Tag Manager
- Modifica l’URL proprietà in GA4 (Amministrazione → Informazioni sulla proprietà)
- Aggiorna eventuali filtri che includono l’hostname
- In GTM, verifica che tutti i trigger funzionino con HTTPS
- Testa conversioni ed eventi in modalità debug
CDN e servizi terzi
Se utilizzi CDN come Cloudflare, Bunny o StackPath:
- Verifica che SSL/TLS sia impostato su Full o Full (strict)
- Attiva Always Use HTTPS nelle page rules
- Purga completamente la cache CDN
- Controlla HSTS è configurato correttamente
Verifiche post-migrazione e monitoraggio
Checklist tecnica finale
Prima di considerare conclusa la migrazione, verifica tutti questi punti:
- SSL Labs test: punteggio A o A+ su ssllabs.com/ssltest
- Tutti i redirect funzionano: HTTP→HTTPS, www→non-www (o viceversa)
- Form e checkout: testa tutti i form di contatto e processi di acquisto
- Login area riservata: verifica WooCommerce, membership, LMS
- API e webhook: aggiorna endpoint in servizi esterni (Zapier, Make, CRM)
- Feed RSS: verifica che puntino a HTTPS
- Sitemap XML: rigenera con Yoast/RankMath e ricarica in GSC
Implementazione HSTS
HTTP Strict Transport Security forza i browser a usare solo HTTPS. Aggiungi in configurazione server:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Inizia con max-age=300 (5 minuti) per testare. Dopo 7 giorni senza problemi, porta a 31536000 (1 anno) e considera l’iscrizione alla HSTS preload list su hstspreload.org.
Monitoraggio prestazioni
HTTPS può impattare marginalmente le performance. Monitora per 30 giorni:
- Core Web Vitals: LCP non dovrebbe aumentare più di 50ms
- TTFB: l’handshake TLS 1.3 aggiunge ~10-20ms, accettabile
- Crawl budget: Google re-indicizza completamente il sito, picco temporaneo di crawling
- Traffico organico: possibile fluttuazione 5-10% per 2-3 settimane, poi recupera
Nel 2026, secondo dati di HTTPArchive, siti WordPress con HTTP/2 o HTTP/3 su HTTPS sono in media 18% più veloci della versione HTTP/1.1 non cifrata.
Gestione certificati e rinnovo automatico
La gestione certificati è l’area dove le agenzie commettono più errori operativi.
Automazione rinnovo Let’s Encrypt
Let’s Encrypt richiede rinnovo ogni 90 giorni. Configura cron job:
0 3 * * 1 certbot renew --quiet --post-hook "systemctl reload nginx"
Questo esegue il rinnovo ogni lunedì alle 3:00. L’opzione --post-hook ricarica il server web solo se il certificato viene rinnovato.
Monitoraggio scadenza certificati
Per gestire decine di siti client, implementa monitoring automatico:
- UptimeRobot: alert quando mancano 30 giorni alla scadenza
- Oh Dear: monitoring completo SSL con notifiche granulari
- AgencyPilot: dashboard centralizzata con alert certificati per tutti i siti client
Un certificato scaduto causa errori ERR_CERT_DATE_INVALID nei browser e perdita immediata di traffico. Nel 2025, secondo analisi su 2.000 agenzie, il 12% ha avuto almeno un incidente di certificato scaduto.
FAQ
La migrazione HTTPS impatta negativamente la SEO?
No, anzi è il contrario. Dal 2014 Google considera HTTPS un fattore di ranking positivo. Durante la migrazione potresti osservare fluttuazioni temporanee (7-15 giorni) mentre Google re-indicizza tutti gli URL, ma il traffico si stabilizza rapidamente. Assicurati di configurare correttamente i redirect 301 e aggiornare Search Console: così facendo, in base ai nostri dati su 400+ migrazioni, il 94% dei siti recupera completamente il traffico entro 3 settimane e il 34% vede un incremento medio del 5-8% entro 60 giorni.
È necessario usare plugin per la migrazione HTTPS?
No, e anzi è sconsigliato affidarsi esclusivamente a plugin. Strumenti come Really Simple SSL possono aiutare a identificare contenuto misto, ma la migrazione corretta richiede interventi a livello database (search-replace), configurazione server (redirect) e update manuale degli URL. I plugin aggiungono overhead PHP e non sostituiscono una configurazione server corretta. L’approccio migliore è: search-replace con WP-CLI, redirect a livello server, verifica manuale. Usa plugin solo come strumento diagnostico temporaneo.
Come gestire la migrazione HTTPS su un sito multilingua con WPML?
La migrazione HTTPS su multilingua richiede attenzione extra. Con WPML devi: eseguire search-replace per ogni dominio/sottodominio linguistico, aggiornare le configurazioni lingua in WPML → Lingue → URL delle lingue con HTTPS, verificare che i language switcher puntino a URL HTTPS, testare hreflang in Search Console per ogni versione linguistica. Se usi domini separati per lingua (es. dominio.it, dominio.com), serve un certificato per ogni dominio o un certificato multi-dominio. Il timing di migrazione dovrebbe essere coordinato per tutte le lingue simultaneamente per evitare problemi di contenuto duplicato cross-domain.
Quanto tempo richiede una migrazione HTTPS professionale?
Su un sito WordPress standard con 50-200 pagine, budget realistico è: 30-45 minuti per installazione certificato e configurazione server, 20-30 minuti per search-replace database e test staging, 15-20 minuti per redirect e configurazione HSTS, 30-60 minuti per verifica contenuto misto e testing completo, 20-30 minuti per aggiornamento Search Console, Analytics e servizi esterni. Totale: 2-3 ore effettive. Per siti complessi (WooCommerce con 1000+ prodotti, multilingua, integrazioni API multiple) possono servire 4-6 ore. Pianifica sempre la migrazione in finestra di basso traffico e considera 24-48h di monitoraggio intensivo post-migrazione.
Il certificato Let’s Encrypt è sufficiente per un e-commerce?
Sì, assolutamente. Let’s Encrypt offre lo stesso livello di cifratura (TLS 1.3, AES-256) dei certificati commerciali. La differenza è solo nella validazione: Let’s Encrypt è DV (Domain Validation), mentre certificati commerciali possono essere OV (Organization Validation) o EV (Extended Validation). Nel 2026, dopo la rimozione della UI della barra verde EV da tutti i browser principali, la differenza percepita dagli utenti è zero. Let’s Encrypt alimenta oltre 450 milioni di siti inclusi e-commerce enterprise. Gli unici casi dove serve commerciale: necessità di garanzia assicurativa, requirement compliance specifici del settore, o preferenza per supporto telefonico 24/7. Per il 98% degli e-commerce WordPress/WooCommerce, Let’s Encrypt è la scelta ottimale.