Dopo Aver Spostato un Sito su un Altro Dominio, Tutte le Immagini Sono Perse

4 set 2014, 22:22:35
Visualizzazioni: 65K
Voti: 10

Ho spostato il sito da www.domain1.com a www.domain2.com

Tuttavia, i percorsi delle immagini puntano ancora a www.domain1.com/wp-content/uploads.... Quindi quando www.domain1.com è andato offline, tutte le mie immagini non vengono più visualizzate.

Ho aggiornato la tabella wp_posts dove tutti gli allegati ora puntano a www.domain2.com/wp-content/uploads..., ma le immagini esistono in www.domain2.com e ancora non riesco a vedere alcuna immagine. È un problema di cache?

2
Commenti

Questa domanda è stata risolta?

Ethan Rævan Ethan Rævan
29 ago 2016 16:54:26

Dovresti usare il plugin wp-migrate-db per questo. Una volta esportato e importato il database, salva le impostazioni dei permalink una volta

Malay Solanki Malay Solanki
5 mar 2018 11:15:14
Tutte le risposte alla domanda 10
1
11

Sembra che tu debba modificare gli URL delle vecchie immagini. Il modo più semplice e veloce per farlo è eseguire una ricerca e sostituzione sul database MySQL.

Puoi utilizzare PHPMyAdmin (solitamente fornito dal tuo hosting web) o altri software per modificare MySQL come Sequel Pro per apportare modifiche al tuo database MySQL senza toccare l'area di amministrazione di WordPress. Questo significa che puoi fare modifiche su larga scala eseguendo query SQL invece di farle una per una, cosa noiosa e che richiede tempo.

Ricorda di fare prima un backup del tuo database. Per farlo in PHPMyAdmin, seleziona il tuo database dalla barra laterale a sinistra, poi clicca su "Esporta". Il metodo "Semplice" va bene, ma se vuoi più controllo allora il metodo "Personalizzato" ti offre molte opzioni.

Dopo aver fatto il backup, clicca sulla scheda SQL e incolla il seguente codice nell'area di testo:

UPDATE wp_options SET option_value = replace(option_value, 'oldurl', 'newurl') WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = replace(guid, 'oldurl','newurl');

UPDATE wp_posts SET post_content = replace(post_content, 'oldurl', 'newurl');

UPDATE wp_postmeta SET meta_value = replace(meta_value,'oldurl','newurl');

E sostituisci "oldurl" con il tuo vecchio URL e "newurl" con il nuovo URL, mantenendo http:// ma rimuovendo gli slash finali. Ricontrolla, e quando sei sicuro, clicca il pulsante Esegui.

Vai sul tuo sito e controlla se le tue immagini funzionano. Se non funzionano, di solito è a causa di un errore di battitura, che puoi correggere ripristinando il database dal backup che hai fatto all'inizio del processo e riprovando.

C'è una guida più dettagliata sulla migrazione di dominio WordPress su questo sito, che contiene anche un link a uno script per generare la query SQL per te.

4 set 2014 23:48:20
Commenti

Una risposta dovrebbe essere più di un semplice link. Questo è al limite, ma assicurati di rivedere "Come scrivo una buona risposta?": "I link a risorse esterne sono incoraggiati, ma per favore aggiungi del contesto attorno al link così che gli altri utenti abbiano un'idea di cosa si tratta e perché è lì. Cita sempre la parte più rilevante di un link importante, nel caso il sito di destinazione non sia raggiungibile o venga rimosso definitivamente."

mrwweb mrwweb
5 set 2014 02:00:00
2

Se il tuo sito è piuttosto piccolo, potresti...

  1. Accedere a phpMyAdmin.
  2. Esportare il tuo database come file SQL.
  3. Fare una copia del tuo file SQL del database così da avere un backup del database originale, nel caso tu faccia un errore.
  4. Aprire il file SQL del database in un editor di testo.
  5. Cercare e sostituire domain1.com con domain2.com.
  6. Salvare il file SQL del database.
  7. Riaccedere a phpMyAdmin.
  8. Importare il file SQL del database.

AGGIORNAMENTO 18/03/2016

DOPO aver eseguito i passaggi sopra indicati, procedi con la seguente procedura:

Passo 1 – Creare una funzione da utilizzare.

function mbe_migrate_widgets() {

}

Passo 2 – Specificare cosa cercare e con cosa sostituire.

function mbe_migrate_widgets() {

    $old_domain = 'http://dev.';
    $new_domain = 'http://beta.';

}

Passo 3 – Recuperare tutti i widget di WordPress.

function mbe_migrate_widgets() {

    $old_domain = 'http://dev.';
    $new_domain = 'http://beta.';

    global $wpdb;

    // Ottieni tutti i Widget
    $widgets = $wpdb->get_results(
        "
        SELECT `option_id`, `option_name`
        FROM $wpdb->options
        WHERE `option_name`
        LIKE '%widget_%'
        "
    );

}

Passo 4 – Scorrere tutti i widget di WordPress e recuperare le informazioni per ciascun widget.

function mbe_migrate_widgets() {

    $old_domain = 'http://dev.';
    $new_domain = 'http://beta.';

    global $wpdb;

    // Ottieni tutti i Widget
    $widgets = $wpdb->get_results(
        "
        SELECT `option_id`, `option_name`
        FROM $wpdb->options
        WHERE `option_name`
        LIKE '%widget_%'
        "
    );

    if ( ! $widgets ) {
        return false;
    }

    $actions = array();

    foreach ( $widgets as $widget ) {

        // Recupera i dati del Widget.
        $widget_data = get_option( $widget->option_name );

    }

    return $actions;

}

Passo 5 – Eseguire la ricerca e sostituzione sui dati del widget e aggiornare i record del database.

function mbe_migrate_widgets() {

    $old_domain = 'http://dev.';
    $new_domain = 'http://beta.';

    global $wpdb;

    // Ottieni tutti i Widget
    $widgets = $wpdb->get_results(
        "
        SELECT `option_id`, `option_name`
        FROM $wpdb->options
        WHERE `option_name`
        LIKE '%widget_%'
        "
    );

    if ( ! $widgets ) {
        return false;
    }

    $actions = array();

    foreach ( $widgets as $widget ) {

        // Recupera i dati del Widget.
        $widget_data = get_option( $widget->option_name );

        // Aggiorna i dati del Widget sostituendo il vecchio dominio con il nuovo.
        $update = update_option(
            $widget->option_name,
            recursive_array_replace( $old_domain, $new_domain, $widget_data )
        );

        if ( $update ) {
            $actions['success'][] = $widget->option_id;
        } else {
            $actions['failed'][] = $widget->option_id;
        }

    }

    return $actions;

}

Passo 6 – Includere la funzione personalizzata di sostituzione ricorsiva nell'array.

// Sostituzione Ricorsiva di Stringhe - recursive_array_replace(mixed, mixed, array);
function recursive_array_replace( $find, $replace, $array ) {

    if ( ! is_array( $array ) ) {
        return str_replace( $find, $replace, $array );
    }

    $newArray = array();

    foreach ( $array as $key => $value ) {
        $newArray[ $key ] = recursive_array_replace( $find, $replace, $value );
    }

    return $newArray;

}

Ecco fatto. Esegui questa funzione una volta e tutti i tuoi widget dovrebbero magicamente ricominciare a funzionare.

Nota: Sta a te decidere dove posizionare questo codice o come eseguirlo. Sostituisci anche le variabili $old_domain e $new_domain di conseguenza.

Nota aggiuntiva: Tieni anche presente che questo esempio riguarda solo i widget. Se hai altre parti del tuo sito web che contengono URL in dati serializzati, modifica la query del database di conseguenza. (Mi riferisco a questa parte del codice: SELECT option_id, option_name FROM $wpdb->options WHERE option_name LIKE '%widget_%' )

Vorrei postare un link al mio blog su questo argomento, ma non voglio sembrare "spam". Questo è essenzialmente un copia/incolla da un articolo che ho scritto sul mio sito web in data 18/03/2016. Il contenuto in questa risposta potrebbe diventare obsoleto e il contenuto nell'articolo sul mio sito web potrebbe diventare più rilevante in futuro. Se sei interessato, controlla il mio profilo per un link al mio sito web.

Spiegazione utile sui dati serializzati: Anatomia di un valore serialize().

5 set 2014 01:01:44
Commenti

Non farlo! Alcune impostazioni si danneggiano facendo così! Se memorizzi un array in WordPress, vengono salvate con una sintassi come questa: a:1:{i:0;s:6: "setting"}. I numeri rappresentano la lunghezza della stringa (1 array, chiave 0, stringa con lunghezza 6), quindi se cambi da mysite.com a mynewsite.com, la lunghezza non corrisponderà più, corrompendo l'array.

Jeroen Jeroen
18 mar 2016 17:43:30

@Jeroen Ho aggiornato la mia risposta riguardo ai dati serializzati. Spero sia utile.

Michael Ecklund Michael Ecklund
19 mar 2016 05:05:51
0

Al rischio di rispondere alla domanda con solo un link, penso che i seguenti passaggi su questa pagina (http://codex.wordpress.org/Moving_WordPress) siano ciò che stai cercando:

Modificare il Nome del Dominio e gli URL

Devi cambiare in modo sicuro tutte le istanze del tuo vecchio nome di dominio con il nuovo nome di dominio nel database. Puoi farlo utilizzando uno dei seguenti metodi:

  1. Esegui solo una ricerca e sostituzione sulla tabella wp_posts.

  2. Utilizza lo Script di Ricerca e Sostituzione per Database WordPress per modificare in modo sicuro tutte le istanze. (Se sei uno sviluppatore, usa questa opzione. È un processo in un solo passaggio rispetto alla procedura in 15 passaggi qui sotto)

  3. Opzionalmente, puoi anche utilizzare uno strumento online (nel caso tu non voglia occuparti di caricare script sul tuo server) Ricerca e Sostituzione PHP Serializzato per WordPress Online che consente di sostituire un vecchio dominio o URL con uno nuovo correggendo allo stesso tempo i dati serializzati.

C'è anche molta altra utile informazione sulla migrazione di WP su quella pagina.

6 set 2014 00:10:02
0

Sembra che tu abbia già la tua risposta, ma ti consiglio vivamente di utilizzare DBSR (db search replace) per sostituire TUTTE le occorrenze di dominio1 con dominio2. Esistono strumenti per questo. Questo è piuttosto pulito: https://github.com/interconnectit/Search-Replace-DB

L'intero processo è descritto. Ha una buona interfaccia utente.

In questo modo sarai sicuro che tutto sia a posto riguardo ai record del database.

29 giu 2016 00:29:58
0

Anche se hai detto di aver aggiornato i tuoi dati in wp_posts con www.domain2.com, ci sono ancora i valori home e siteurl nella tabella wp_options che devono essere modificati, insieme ad altre cose.

Per assicurarti che tutti i tuoi dati siano stati aggiornati al nuovo dominio, segui questi passaggi:

  1. Scarica lo script di ricerca e sostituzione nel database di Interconnect IT qui
  2. Decomprimi il file e carica la cartella (tramite FTP) nella root della tua installazione WordPress, rinominandola in replace (screenshot)
  3. Accedi alla nuova cartella creata tramite browser (es: http://www.domain2.com/replace) e visualizzerai lo strumento di ricerca/sostituzione
  4. Da qui dovrebbe essere tutto abbastanza intuitivo: inserisci il tuo vecchio URL nel campo search for… e il nuovo URL nel campo replace with…

Puoi cliccare il pulsante dry run sotto actions per vedere cosa verrà sostituito prima di eseguire lo script. Una volta terminato, assicurati di rimuovere la cartella /replace/.

29 ago 2016 17:00:39
0

metodo molto semplice

Installa questo plugin Velvet nel backend di WordPress.

Ora vai nelle impostazioni di Velvet e inserisci il tuo vecchio dominio e il nuovo dominio. Premi il pulsante di aggiornamento. Hai finito.

5 mar 2018 11:41:00
0

Utilizza WP Migrate DB per esportare i dati in formato zip con sostituzione dell'URL.

Con questo plugin non perderai widget o dati serializzati.

Plugin WP Migrate DB per l'esportazione del database WordPress

5 mar 2018 11:50:34
0

Puoi utilizzare il plugin Wordpress: Go Live Update Urls

È davvero facile e veloce.

15 nov 2021 12:16:22
1
-1

Una volta all'interno del cPanel, individua la categoria Database e clicca sull'icona dello strumento phpMyAdmin. Ora ti trovi nella pagina principale di phpMyAdmin. Trova il database appena aggiunto e clicca sul suo nome nella barra laterale sinistra. Il nostro database di esempio si chiama testdb. Questo aprirà il database e la schermata si aggiornerà mostrando un elenco delle tabelle. Utilizzando nuovamente la barra laterale, individua e clicca sulla tabella wp-posts. Guarda nella parte superiore dello schermo e vedrai diverse schede disposte orizzontalmente. Clicca sulla scheda SQL. Ora ti trovi in una schermata di editor MySQL. Nell'area del codice, copia il seguente frammento di MySQL.

UPDATE wp_posts SET post_content=(REPLACE (post_content, 'dommain1.com','domain2.com'));

Potrebbe funzionare?

29 ago 2016 16:34:37
Commenti

In cosa differisce dalla altra risposta? Ci sono più riferimenti alle immagini nel database oltre al solo contenuto del post.

Howdy_McGee Howdy_McGee
29 ago 2016 16:58:40
0
-2

Ciao, se hai familiarità con i database, segui questi passaggi.

  1. Accedi a phpMyAdmin.
  2. Esporta il tuo database come file SQL.
  3. Crea una copia del tuo file SQL del database così da avere un backup del database originale, nel caso tu commetta un errore.
  4. Apri il file SQL del database in un editor di testo.
  5. Cerca e sostituisci domain1.com con domain2.com.
  6. Salva il file SQL del database.
  7. Accedi nuovamente a phpMyAdmin.
  8. Importa il tuo file SQL del database.
28 lug 2015 13:57:08