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

Immagine di copertina dell'articolo

Prerequisiti

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

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.

Copia i file in locale

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

C:\xampp\htdocs\miosito\

Crea il database locale

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

CREATE DATABASE miosito_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

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 and replace prima dell'import. Gli URL vanno sostituiti dopo con uno strumento apposito (vedi punto 6).

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' );

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

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.

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"

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');

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

# Operazione Strumento
1 Backup file e DB remoto FTP / phpMyAdmin
2 Copia file in locale Explorer / terminale
3 Crea DB locale phpMyAdmin
4 Importa .sql phpMyAdmin
5 Aggiorna wp-config.php Editor di testo
6 Sostituisci URL Search Replace DB / WP-CLI
7 Configura Virtual Host httpd-vhosts.conf
8 Modifica file hosts Notepad come Admin
9 Test e debug Browser / log Apache