Migrare un sito WordPress senza interruzioni né perdite di posizionamento

Come spostare il tuo sito WordPress da un hoster all'altro mantenendo intatti indirizzi, SSL e posizionamento.

Presentazione

Migrare un sito WordPress spesso spaventa: si teme l'interruzione, la perdita di posizionamento, i dati corrotti. Con il metodo giusto, una migrazione WordPress può risultare invisibile ai visitatori e a Google.

Questa guida copre due approcci: il metodo con estensione (rapido, consigliato sotto 1 GB) e il metodo manuale (più controllato, per i siti grossi). Trovi anche i passaggi preparatori (TTL del DNS, verifica delle estensioni), la lista di controllo dopo la migrazione (SSL, reindirizzamenti, mappa del sito su Google) e l'elenco delle trappole da evitare, quelle che fanno perdere posizionamento o rompono un sito (migrazione sbagliata della base con le stringhe serializzate, wp-config dimenticato, certificati SSL rinnovati male).

Prima della migrazione: preparare il terreno

Una buona migrazione WordPress comincia 48 ore prima del passaggio. Tre azioni preparatorie riducono moltissimo i rischi:

  1. Abbassare il TTL del DNS del tuo dominio a 300 secondi (5 minuti) almeno 48 ore prima della migrazione. Il TTL abituale è di 3600-86400 s, e questo può far durare la propagazione fino a 24 ore dopo la modifica. Con un TTL di 300 s, la propagazione richiede di norma meno di 30 minuti. Si cambia presso il registrar (OVH, Gandi, Cloudflare).
  2. Passare in rassegna estensioni e temi prima della migrazione. Elimina le estensioni disattivate, quelle segnalate come « non compatibili con la tua versione di PHP » e i temi inutilizzati. Un sito WordPress di 5 anni accumula di solito dal 30 al 50 % di estensioni obsolete o doppie. La migrazione è l'occasione per fare pulizia.
  3. Elencare gli elementi critici: versione di PHP in uso (guarda wp-admin/site-health.php), base di dati (dimensione, versione di MySQL/MariaDB), estensioni PHP necessarie (imagick, curl, mbstring, gd), attività pianificate, certificati SSL, reindirizzamenti .htaccess su misura. Servono a riprodurre l'ambiente identico a com'era.
  4. Modalità manutenzione, se vuoi: se puoi permetterti 15 minuti di irraggiungibilità, l'estensione WP Maintenance Mode mostra una pagina d'attesa durante il passaggio. Per i siti di vendita o molto frequentati, meglio la migrazione progressiva senza manutenzione.

Metodo 1: con un'estensione (consigliato)

  1. Copia di sicurezza completa prima di migrare: UpdraftPlus, BackWPup o All-in-One WP Migration
  2. Installare un WordPress vuoto sul nuovo hosting
  3. Ripristinare la copia tramite l'estensione
  4. Provare il sito sull'IP o sul sottodominio provvisorio del nuovo hoster
  5. Spostare i DNS del dominio verso il nuovo hoster (con TTL breve)
  6. Rifare il certificato SSL sul nuovo hoster dopo la propagazione del DNS

Metodo 2: migrazione manuale (siti grossi, vendita online)

Per i siti oltre 1 GB o per WooCommerce con migliaia di ordini, il metodo manuale è più affidabile. I passaggi:

  1. Esportare la base di dati con phpMyAdmin o in SSH: mysqldump -u utilisateur -p ma_base > db_backup.sql. Per i siti grossi aggiungi --single-transaction --quick, così eviti di bloccare la base.
  2. Copiare i file di WordPress con FTP/SFTP oppure rsync: rsync -avz -e ssh ./wp-content/ utilisateur@nouveau-serveur:/var/www/html/wp-content/. Il rsync incrementale è ottimo per ridurre i tempi di trasferimento.
  3. Creare la nuova base presso il nuovo hoster (cPanel/Plesk → MySQL Databases), poi importare: mysql -u utilisateur -p ma_base_nouvelle < db_backup.sql.
  4. Adattare wp-config.php con i nuovi dati della base (DB_NAME, DB_USER, DB_PASSWORD, DB_HOST). Mantieni le stesse chiavi di sicurezza (AUTH_KEY e le altre) per non disconnettere gli utenti.
  5. Aggiornare gli indirizzi se cambiano: se sposti anche il dominio, usa WP-CLI (wp search-replace 'ancien-domaine.com' 'nouveau-domaine.com' --skip-columns=guid), che tratta correttamente le stringhe serializzate di PHP. Un semplice UPDATE in SQL romperebbe i riquadri e le opzioni serializzate.
  6. Provare su un sottodominio provvisorio: migration.nouveau-serveur.com, modificando il file hosts del tuo computer (senza toccare il DNS pubblico). Verifica: pagina iniziale, articoli, moduli, pagamenti (se vendi online), e-mail automatiche.
  7. Passaggio dei DNS: aggiorna i record A/AAAA presso il registrar. Con il TTL a 300 s preparato in anticipo, la propagazione richiede pochi minuti.

Metodo 3: migrazione gratuita a cura di By-Hoster

Se migri verso By-Hoster, il nostro reparto tecnico fa il trasloco gratuitamente. Tu ci dai gli accessi FTP o cPanel del vecchio hoster e noi ci occupiamo di tutto, senza interruzioni, in un tempo che dipende dalle dimensioni del sito e ti viene confermato nel ticket. Sono compresi: trasferimento di file e base di dati, riconfigurazione di wp-config, generazione del certificato SSL Let's Encrypt, prove dopo la migrazione e passaggio dei DNS concordato. Manterrai l'accesso al vecchio hosting per 14 giorni, per poter verificare tutto.

Lista di controllo dopo la migrazione: 12 punti da verificare

Una migrazione non è finita quando il DNS punta al nuovo server. Ecco le 12 verifiche fondamentali nelle 24 ore dopo il passaggio:

  • Sito raggiungibile in HTTP e in HTTPS: prova con 3-4 browser e con un telefono. Controlla le pagine principali (pagina iniziale, contatti, carrello se vendi online).
  • Certificato Let's Encrypt generato e attivo: curl -I https://votredomaine.com deve rispondere 200 OK con un certificato valido. Tempo dopo il DNS: 5-30 minuti.
  • Permalink funzionanti: controlla 5-10 articoli a caso. Se compare un errore 404, vai in wp-admin → Impostazioni → Permalink e premi « Salva » (rigenera .htaccess).
  • Immagini caricate: un Ctrl+F5 sulla pagina iniziale. Se mancano immagini, controlla i permessi di wp-content/uploads (755 per le cartelle, 644 per i file).
  • Moduli di contatto: manda un messaggio di prova. Verifica che l'e-mail arrivi. In caso contrario, imposta l'SMTP (WP Mail SMTP) con un servizio esterno (Mailgun, SendGrid).
  • Accesso a wp-admin: entra e usa la verifica in due passaggi, se attiva. Se compare l'errore « cookie bloccati », svuota la cache del browser e riprova in finestra privata.
  • WooCommerce (se lo usi): fai un acquisto di prova (modalità « test » di Stripe o PayPal). Controlla le e-mail di conferma, l'aggiornamento delle scorte e la creazione della fattura PDF.
  • Attività pianificate di WordPress: verifica che girino (wp cron event list con WP-CLI). Disattiva il WP-Cron nativo e imposta un cron di sistema: * * * * * curl https://votredomaine.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1.
  • Prestazioni: prova con PageSpeed Insights. Se il punteggio è sotto 80, controlla che la cache sia attiva (LiteSpeed Cache, WP Rocket, W3 Total Cache), la compressione Brotli/Gzip e il caricamento differito delle immagini.
  • Mappa del sito inviata a Google Search Console: se l'IP è cambiata, Google può metterci dalle 24 alle 72 ore per ripassare. Sollecitalo da Search Console → Sitemap → invia l'indirizzo.
  • Vecchi reindirizzamenti 301: se sposti anche il dominio, imposta i 301 sul vecchio hoster con .htaccess: RewriteRule ^(.*)$ https://nouveau-domaine.com/$1 [R=301,L]. Tienili almeno 12 mesi, per conservare il valore dei link ai fini del posizionamento.
  • Sorveglianza per 24 ore: un servizio gratuito come UptimeRobot o Hyperping rileva le interruzioni e avvisa per e-mail o SMS. Nelle prime 48 ore tieni d'occhio anche i registri degli errori PHP (tail -f /var/log/php/error.log).

Trappole frequenti e come evitarle

  • Stringhe serializzate rotte: se migri con un banale « cerca e sostituisci » in SQL, le opzioni PHP serializzate (riquadri, personalizzatore, costruttori di pagine) si rompono. Usa SEMPRE WP-CLI o un'estensione come Better Search Replace, che tratta bene la serializzazione.
  • Certificato SSL non rifatto dopo la migrazione: Let's Encrypt va rigenerato sul nuovo hoster, perché è legato all'IP e al dominio. I vecchi certificati non si spostano.
  • wp-config.php sbagliato: dimenticare di aggiornare DB_HOST (a volte « localhost », a volte un indirizzo IP), oppure lasciare vecchie impostazioni con WP_DEBUG=true, che mostrano gli errori in produzione.
  • Cron nativo di WordPress non sostituito: sul vecchio hosting il WP-Cron girava con le visite. Se dimentichi di disattivare il WP-Cron nativo e di impostare un vero cron di sistema, le attività pianificate (copie di sicurezza, invio di newsletter, aggiornamenti programmati) smettono di funzionare come si deve.
  • Cache vecchia: la vecchia cache della rete di distribuzione (Cloudflare, BunnyCDN) punta ancora al vecchio server. Svuotala dopo la migrazione: Cloudflare → « Purge Everything », BunnyCDN → « Clear Cache ».
  • Mappa del sito XML rotta: Yoast e Rank Math la rigenerano da soli, ma verifica che sia raggiungibile a https://votredomaine.com/sitemap_index.xml. Reinviala a Search Console.
  • Propagazione DNS incompleta: se il vecchio TTL è rimasto a 24 ore, per un giorno intero alcuni visitatori vedranno ancora il vecchio sito. Ecco perché portare il TTL a 300 s prima della migrazione è fondamentale.

Domande frequenti

No, se mantieni esattamente gli stessi indirizzi e la propagazione del DNS avviene in modo pulito (TTL breve prima della migrazione). Google vede solo un IP diverso: contenuto e struttura restano identici.

Per un sito comune sotto 1 GB con il metodo dell'estensione: da 1 a 3 ore. Per un sito medio da 1 a 5 GB con il metodo manuale: da 4 a 8 ore. Per un grosso negozio online con migliaia di prodotti: da 1 a 2 giorni (preparazione, prove, passaggio programmato). La migrazione gratuita By-Hoster si svolge in modo concordato con te, in un tempo confermato nel ticket in base alle dimensioni del sito.

Se mantieni lo stesso dominio: no, Google si accorge da solo del cambio di IP in 24-72 ore. Se cambi dominio: sì, usa lo strumento « Cambio di indirizzo » di Google Search Console dopo aver impostato i reindirizzamenti 301. Altrimenti perdi le posizioni conquistate.

Con il metodo dell'estensione e un TTL DNS breve, l'irraggiungibilità dura di norma da 0 a 5 minuti (il tempo che i DNS si propaghino). Con il metodo manuale ben preparato si può puntare a zero interruzioni: si allestisce il nuovo server in parallelo, si prova modificando il file hosts locale e si spostano i DNS solo quando tutto è verificato.

Ci servono: accesso SFTP o FTP al vecchio hosting (basta in sola lettura), accesso a phpMyAdmin o un export SQL della base di dati e accesso alla gestione DNS (presso il registrar: OVH, Gandi, Cloudflare e simili) per spostare i record al momento opportuno. Nessuna informazione sensibile viene conservata dopo la migrazione.

No, ma occorre disattivare le estensioni di cache prima dell'esportazione (W3 Total Cache, WP Rocket, LiteSpeed Cache), per evitare che file di cache obsoleti causino errori sul nuovo server. Riattivale dopo la migrazione e svuota la cache. Stesso discorso per le estensioni di sicurezza (Wordfence, Sucuri): disattivare prima dell'esportazione, riattivare dopo.

Sì, ma è più complicato, perché WordPress.com (la versione ospitata) limita l'accesso ai file. Il metodo: 1) esportare i contenuti da Outils → Exporter in wp-admin (produce un file XML); 2) installare WordPress.org sul tuo hosting; 3) importare l'XML da Outils → Importer → WordPress. Questo metodo porta articoli, pagine, contenuti multimediali e commenti, ma non i temi a pagamento di WordPress.com (da ricomprare o sostituire). Metti in conto 4-8 ore, comprese le sistemazioni grafiche.