Come Migrare un Sito WordPress da Hosting Online a Locale: Guida Pratica Completa

da server a pc locale

Prerequisiti

Installa in locale uno stack Apache + PHP + MariaDB. Le opzioni più comuni su Windows:

  • XAMPP → cartella web: C:\xampp\htdocs\
  • WampServer → cartella web: C:\wamp64\www\

1. Backup dal server remoto

File WordPress

Comprimi l’intera cartella WordPress dal pannello hosting o via SSH:

tar -czf wordpress_backup.tar.gz /var/www/html/miosito/

Scarica l’archivio in locale via FTP o dal file manager del pannello.

Database

Da phpMyAdmin remoto:

  1. Seleziona il database WordPress
  2. Esporta → Metodo: Personalizzato
  3. Formato: SQL
  4. Spunta Aggiungi istruzione DROP TABLE
  5. Clicca Esegui

Salva il file .sql in locale.


2. Copia i file in locale

Estrai l’archivio e copia la cartella nella directory web locale:

C:\xampp\htdocs\miosito\

3. Crea il database locale

Apri http://localhost/phpmyadmin e lancia questa query:

CREATE DATABASE miosito_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

4. Importa il database

  1. Seleziona miosito_db in phpMyAdmin
  2. Scheda Importa
  3. Scegli il file .sql esportato
  4. Clicca Esegui

⚠️ Non modificare il file .sql con find & replace prima dell’import. Gli URL vanno sostituiti dopo con uno strumento apposito (vedi punto 6).


5. Modifica wp-config.php

Apri C:\xampp\htdocs\miosito\wp-config.php e aggiorna:

define( 'DB_NAME',     'miosito_db' );
define( 'DB_USER',     'root' );
define( 'DB_PASSWORD', '' );
define( 'DB_HOST',     'localhost' );

// Forza URL locale
define( 'WP_HOME',    'http://miosito.local' );
define( 'WP_SITEURL', 'http://miosito.local' );

6. Sostituisci gli URL nel database

WordPress salva molti dati in formato serializzato PHP — un semplice find & replace corrompe questi dati perché il contatore di lunghezza della stringa non viene aggiornato.

Usa Search Replace DB:

  1. Scarica lo script da github.com/interconnectit/Search-Replace-DB
  2. Copia la cartella in C:\xampp\htdocs\miosito\
  3. Apri nel browser: http://miosito.local/Search-Replace-DB-master/
  4. Compila i campi:
    • Search for: https://www.miosito.com
    • Replace with: http://miosito.local
  5. Clicca Dry Run per anteprima, poi Live Run
  6. Elimina la cartella di Search Replace DB dal server al termine

In alternativa, se hai WP-CLI installato:

wp search-replace 'https://www.miosito.com' 'http://miosito.local' --all-tables

7. Configura il Virtual Host Apache

Apri C:\xampp\apache\conf\extra\httpd-vhosts.conf e aggiungi:

<VirtualHost *:80>
    ServerName miosito.local
    ServerAlias www.miosito.local
    DocumentRoot "C:/xampp/htdocs/miosito"
    <Directory "C:/xampp/htdocs/miosito">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Riavvia Apache dal pannello XAMPP.


8. Punta il dominio alla macchina locale

Apri il file C:\Windows\System32\drivers\etc\hosts come Amministratore e aggiungi:

127.0.0.1   miosito.local
127.0.0.1   www.miosito.local

Se vuoi evitare la modifica del file hosts e far risolvere il dominio solo da un browser specifico, usa il flag di avvio:

chrome.exe --host-resolver-rules="MAP miosito.local 127.0.0.1"

9. Verifica finale

Apri http://miosito.local nel browser. Se il sito non carica:

Schermata bianca o errore 500 → controlla wp-config.php, credenziali DB e log Apache:

C:\xampp\apache\logs\error.log

Immagini o link rotti → la sostituzione URL non è completa, ripeti il punto 6.

Errore “Too many redirects” → aggiungi in wp-config.php:

define('FORCE_SSL_ADMIN', false);
$_SERVER['HTTPS'] = 'off';

Loop di login → svuota i cookie del browser o aggiungi in wp-config.php:

define('COOKIE_DOMAIN', 'miosito.local');

10. Reset password admin (se necessario)

Da phpMyAdmin, scheda SQL:

UPDATE wp_users
SET user_pass = MD5('nuova_password')
WHERE ID = 1;

-- Invalida le sessioni attive
UPDATE wp_usermeta
SET meta_value = ''
WHERE user_id = 1 AND meta_key = 'session_tokens';

WordPress riconoscerà l’hash MD5 e lo aggiornerà al formato sicuro al primo login.


Riepilogo dei passaggi

#OperazioneStrumento
1Backup file e DB remotoFTP / phpMyAdmin
2Copia file in localeExplorer / terminale
3Crea DB localephpMyAdmin
4Importa .sqlphpMyAdmin
5Aggiorna wp-config.phpEditor di testo
6Sostituisci URLSearch Replace DB / WP-CLI
7Configura Virtual Hosthttpd-vhosts.conf
8Modifica file hostsNotepad come Admin
9Test e debugBrowser / log Apache