
🔄 Come sostituire un vecchio dominio con uno nuovo usando phpMyAdmin: una guida per WordPress
Hai spostato un sito su un nuovo dominio, e non funziona. Oppure si apre, ma senza stili. O la bacheca di amministrazione non ti fa entrare. Chiunque abbia migrato manualmente WordPress ci è passato: il database ricorda ancora il vecchio URL, e il sito cerca disperatamente di caricare risorse da un indirizzo che non esiste più.
Quattro query SQL in phpMyAdmin risolvono il problema in cinque minuti. Niente plugin, niente WP-CLI, niente panico. Ecco una guida passo passo, dalla ricerca del dominio attuale alla verifica finale. Con indicazioni per prefissi delle tabelle non standard, HTTPS e dati serializzati.
💡 Panoramica rapida:
- Trova il dominio attuale nella tabella wp_options: i campi siteurl e home
- Esegui quattro query UPDATE nella scheda SQL di phpMyAdmin
- Reimposta la password dell'amministratore tramite wp_users se la bacheca non ti fa entrare
- Salva i permalink nelle impostazioni di WordPress per ripristinare gli stili
- Per negozi e multisite, usa Better Search Replace o WP-CLI: un semplice REPLACE danneggia gli array serializzati
Da dove iniziare: trova il dominio attuale nel database
Prima di fare sostituzioni, assicurati di sapere quale dominio è attualmente impostato per il sito. Questo ti farà risparmiare tempo se il sito è stato spostato in precedenza e nel database potrebbe essere rimasto un terzo URL "intermedio".
Apri phpMyAdmin, seleziona il database del sito e trova la tabella wp_options. Contiene due righe: siteurl (l'indirizzo WordPress) e home (l'indirizzo del sito). Questi sono i valori che cambieremo per primi.

Se il prefisso della tabella non è standard (ad esempio, mysite_ invece di wp_), cerca la tabella mysite_options. Puoi trovare il prefisso nel file wp-config.php: la variabile $table_prefix.
Quattro query SQL per una sostituzione completa del dominio
Esegui ogni query una per una nella scheda "SQL" di phpMyAdmin. Prima di eseguirle, assicurati di fare un backup del database: l'esportazione tramite phpMyAdmin richiede un minuto e ti salva da errori irreversibili.
Sostituisci http://www.oldurl con http://www.newurl in tutte le query seguenti. Se il sito gira su HTTPS, usa https:// in entrambi gli indirizzi.
1. Aggiornamento di HOME e SITEURL
Questo cambia i due indirizzi chiave in wp_options. Senza questo passaggio, il sito semplicemente non si aprirà sul nuovo dominio; WordPress continuerà a tentare il reindirizzamento a quello vecchio.
1 UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldurl', 'http://www.newurl') WHERE option_name = 'home' OR option_name = 'siteurl';
2. Aggiornamento dei GUID dei post
Il campo guid in wp_posts memorizza l'identificativo permanente di ogni articolo. Sostituirlo non è critico per il funzionamento del sito; WordPress non usa il GUID per l'instradamento. Ma se le persone leggono il tuo sito tramite lettori RSS, la pulizia dei GUID è importante: i vecchi URL nel feed porteranno a link non funzionanti.
1 UPDATE wp_posts SET guid = replace(guid, 'http://www.oldurl', 'http://www.newurl');
3. Aggiornamento del contenuto dei post
La query più estesa. post_content contiene il testo di tutte le pagine e gli articoli, incluse le immagini incorporate e i link interni. Dopo averla eseguita, tutte le immagini nel contenuto verranno caricate dal nuovo dominio.
1 UPDATE wp_posts SET post_content = replace(post_content, 'http://www.oldurl', 'http://www.newurl');
4. Aggiornamento dei meta campi
Campi personalizzati, impostazioni dei plugin, dati del tema: tutto questo è memorizzato in wp_postmeta. Salta questa query e troverai link non funzionanti in posti apparentemente inaspettati: il logo nel footer, lo sfondo nel personalizzatore, l'URL nel tuo plugin SEO.
1 UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://www.oldurl', 'http://www.newurl');
Dopo aver eseguito tutte e quattro le query, apri il sito sul nuovo dominio. Se tutto è stato fatto correttamente, non dovrebbero esserci problemi. Ma a volte succede qualcos'altro: un messaggio "Errore di connessione al database" o la pagina si apre senza stili.

La prima cosa di cui hai bisogno in questa situazione è l'accesso alla bacheca di amministrazione.
Come accedere alla bacheca se la password è persa o il sito non ti fa entrare
Il cliente non ha lasciato la password. Oppure ti sei bloccato fuori cambiando il dominio, e /wp-admin ti getta in un reindirizzamento infinito. Ecco due modi per ottenere i diritti di amministratore direttamente dal database.
Reimpostare la password dell'amministratore tramite phpMyAdmin
Apri la tabella wp_users (il tuo prefisso potrebbe essere diverso: mysite_users, ecc.). Trova l'utente con diritti di amministratore e clicca su "Modifica":

Nella riga user_pass, seleziona la funzione MD5 dal menu a tendina e inserisci la nuova password nel campo adiacente. Clicca su "Esegui":

Nota: WordPress moderno utilizza phpass (hash bcrypt), non MD5. Tuttavia, quando inserisci una password WordPress, il sistema verifica l'hash in sequenza: se il controllo bcrypt fallisce, prova il fallback MD5 e ricodifica immediatamente la password nel formato corrente. Ecco perché MD5 via phpMyAdmin funziona come chiave temporanea.
Creare un amministratore via PHP
Un metodo alternativo è aggiungere un nuovo utente amministratore in modo programmatico. Il codice si inserisce nel functions.php del tema attivo o tramite un MU-plugin.
Aggiungi quanto segue al functions.php del tuo tema child:
1 function sdstudio_add_admin_user() { 2 $userdata = array( 3 'user_login' => 'tempadmin', 4 'user_pass' => 'TempPass123!', 5 'user_email' => '[email protected]', 6 'role' => 'administrator', 7 ); 8 wp_insert_user( $userdata ); 9 } 10 add_action( 'init', 'sdstudio_add_admin_user' );
La funzione wp_insert_user() crea un utente con i parametri forniti e l'hook init viene eseguito a ogni richiesta WordPress. Basta aprire una qualsiasi pagina del sito una volta e l'utente viene creato.
Dopo aver effettuato l'accesso al pannello di amministrazione, assicurati di eliminare sia la funzione dal functions.php sia l'utente temporaneo che hai creato. Lasciare tempadmin con una password in chiaro è una falla di sicurezza.
Correggere immagini e stili non funzionanti dopo la sostituzione del dominio
Hai accesso al pannello di amministrazione, ma le immagini non si caricano e il layout è compromesso. In nove casi su dieci, una semplice operazione risolve il problema.
Vai su "Impostazioni" → "Permalink":

Non modificare nulla; clicca semplicemente "Salva le modifiche":

WordPress ricostruirà la struttura degli URL, aggiornerà la cache delle regole di riscrittura e svuoterà la cache dei redirect interni. Dopo questa operazione, le immagini di solito tornano al loro posto.
Se non ha funzionato, significa che il vecchio dominio è incorporato in array serializzati. Una semplice REPLACE SQL li danneggia: la lunghezza della stringa in un array serializzato è codificata come numero e sostituire "vecchio-dominio-lungo.ru" con "nuovo-corto.io" modifica quella lunghezza, rendendo l'array illeggibile. Installa il plugin gratuito Better Search Replace; gestisce correttamente la serializzazione e mostra quante corrispondenze sono state trovate in ogni tabella prima di effettuare la sostituzione.
Per i siti con WP-CLI, è ancora più semplice con un solo comando:
1 wp search-replace 'http://olddomain.ru' 'https://newdomain.io' --all-tables --dry-run
Il flag --dry-run mostra prima cosa verrà sostituito senza apportare modifiche. Una volta che sei sicuro, eseguilo senza il flag. Anche search-replace di WP-CLI gestisce i dati serializzati e lo fa più velocemente dell'interfaccia web.
Il video qui sotto mostra l'intero processo, dall'accesso a phpMyAdmin alla verifica del sito dopo la sostituzione:
⁉️🤔 Domande frequenti
È obbligatorio usare phpMyAdmin per la sostituzione del dominio?
No. Se il sito non è ancora stato spostato, Duplicator o All-in-One WP Migration eseguono la sostituzione automaticamente durante il deploy. Se il sito è già sul nuovo hosting senza accesso amministrativo, restano le query SQL via phpMyAdmin, Adminer o WP-CLI. Per la maggior parte dei webmaster, phpMyAdmin è il metodo più diretto e controllato: vedi ogni operazione invece di affidarti alla scatola nera di un plugin.
Cosa fare se il prefisso delle tabelle non è wp_?
Verifica il valore della costante
$table_prefixinwp-config.php. Di solito èwp_, ma alcuni hosting o plugin di sicurezza come Solid Security (ex iThemes Security) a volte lo cambiano con uno casuale. In tutte le query sopra, sostituisciwp_con il tuo prefisso (ad esempio,xyz123_optionsinvece diwp_options).
Perché dopo la sostituzione il sito si apre senza stili?
Il vecchio dominio rimane nelle impostazioni del tema, nella cache o nella CDN. Rigenera i permalink (istruzioni sopra) e svuota la cache del plugin di caching. Se usi Cloudflare o un'altra CDN, invalida la cache lato provider. Se non ha funzionato, esegui Better Search Replace: probabilmente il vecchio URL è incorporato in un array serializzato
theme_mods_*.
Il sito è su HTTPS, ma dopo lo spostamento il certificato non funziona. Cosa devo fare?
Assicurati di aver usato
https://(nonhttp://) in tutte le query. Verifica che entrambi gli indirizzi nelle impostazioni di WordPress, dopo aver fatto l'accesso al pannello di amministrazione, inizino conhttps://. Il certificato SSL vero e proprio si configura lato hosting, tramite pannello di controllo o Let's Encrypt gratuito. È una procedura separata, non legata al database.
Posso sostituire il dominio senza accesso a phpMyAdmin?
Sì. WP-CLI:
wp search-replace 'http://olddomain' 'http://newdomain' --all-tables. Solo FTP: aggiungi le righedefine('WP_HOME','http://newdomain');edefine('WP_SITEURL','http://newdomain');awp-config.php. Questo sovrascrive temporaneamente gli indirizzi e ti dà accesso amministrativo. Dopo aver fatto l'accesso, rimuovi le righe e salva le impostazioni da interfaccia.
Devo cambiare il GUID in wp_posts o posso saltarlo?
Non è necessario per il funzionamento del sito. WordPress non usa il GUID per il routing, solo per identificare i post nei feed RSS. Se le persone leggono attivamente il tuo sito via RSS, la sostituzione ha senso. In caso contrario, puoi saltare la terza delle quattro query senza conseguenze.
Dopo aver sostituito il dominio via SQL, alcune impostazioni dei plugin sono andate perse. Perché?
Plugin come WooCommerce, Advanced Custom Fields e gli slider memorizzano gli URL in array serializzati in
wp_postmeta. Una sempliceREPLACEnon tiene conto del contatore di lunghezza della stringa nella serializzazione e rompe la struttura. La soluzione è Better Search Replace owp search-replace(deserializzano l'array, sostituiscono la stringa e la serializzano di nuovo). Se hai già rotto tutto, ripristina il database dal backup e ripeti la sostituzione con lo strumento corretto.
Cosa fare nei casi complessi: e-commerce, multisite e database grandi
La sostituzione del dominio via SQL è una procedura da cinque minuti se hai accesso diretto a phpMyAdmin e un prefisso delle tabelle standard. Ma ci sono situazioni in cui la sostituzione manuale via REPLACE è davvero rischiosa.
Negozi online su WooCommerce con centinaia di migliaia di ordini. Reti multisite con decine di tabelle separate per ogni sottosito. Siti dove gli URL sono scritti direttamente in array serializzati (impostazioni del tema, page builder, slider). In questi casi, una singola REPLACE SQL può danneggiare la struttura dei dati, e ripristinare il database dal backup richiederà più tempo che fare una sostituzione accurata fin dall'inizio.
Better Search Replace o WP-CLI search-replace gestiscono la serializzazione: usali. E se il database supera il gigabyte e il costo di un errore è alto, un'ora di lavoro di uno specialista costerà meno che ripristinare un negozio il cui fermo macchina costa denaro.
Abbiamo approfondito il tema della migrazione del sito preservando la SEO e senza perdere traffico in una guida dedicata. E se dopo la sostituzione incontri un errore specifico, scrivi nei commenti e ti aiuteremo con la diagnostica.



