it-swarm.com.de

Nach dem Verschieben einer Site in eine andere Domain gehen alle Bilder verloren

Ich bin von www.domain1.com nach www.domain2.com umgezogen

Die Bildpfade zeigen jedoch weiterhin auf www.domain1.com/wp-content/uploads.... Wenn www.domain1.com nicht mehr funktioniert, werden alle meine Bilder nicht mehr angezeigt.

Ich habe die wp_posts-Tabelle aktualisiert, in der alle Anhänge jetzt auf www.domain2.com/wp-content/uploads... verweisen, aber die Bilder sind in www.domain2.com vorhanden und ich kann immer noch kein Bild sehen. Ist mein Caching ausgeschaltet?

3
p.a.

Es hört sich so an, als müssten Sie die URLs für die alten Bilder ändern. Der einfachste und schnellste Weg, dies zu tun, ist das Suchen und Ersetzen in der MySQL-Datenbank.

Sie können PHPMyAdmin (normalerweise von Ihrem Webhost bereitgestellt) oder eine andere MySQL-Bearbeitungssoftware wie Sequel Pro verwenden, um Änderungen an Ihrer MySQL-Datenbank vorzunehmen, ohne den WordPress-Administrationsbereich zu berühren. Dies bedeutet, dass Sie umfangreiche Änderungen vornehmen können, indem Sie SQL-Abfragen ausführen, anstatt sie einzeln auszuführen. Dies ist mühsam und zeitaufwendig.

Denken Sie daran, zuerst eine Sicherungskopie Ihrer Datenbank zu erstellen. Wählen Sie dazu in PHPMyAdmin links in der Seitenleiste Ihre Datenbank aus und klicken Sie auf "Exportieren". Die "Simple" -Methode ist in Ordnung, aber wenn Sie mehr Kontrolle darüber haben möchten, gibt Ihnen die "Custom" -Methode viele Optionen.

Klicken Sie nach dem Sichern auf die Registerkarte SQL und fügen Sie Folgendes in das Textfeld ein:

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

Und ersetzen Sie "oldurl" durch Ihre alte URL und "newurl" durch Ihre neue URL, wobei Sie http: // beibehalten, aber abschließende Schrägstriche entfernen. Überprüfe es noch einmal und wenn du damit zufrieden bist, klicke auf die Schaltfläche Los.

Navigieren Sie zu Ihrer Site und überprüfen Sie, ob Ihre Bilder funktionieren. Wenn nicht, liegt dies normalerweise an einem Tippfehler, den Sie beheben können, indem Sie die Datenbank aus der Sicherung wiederherstellen, die Sie zu Beginn des Vorgangs erstellt haben, und es erneut versuchen.

Unter this site finden Sie eine erweiterte Anleitung zur Migration von WordPress-Domänen. Dort finden Sie auch einen Link zu einem Skript, mit dem Sie die SQL-Abfrage für Sie generieren können.

4
Steve Mitchell

Es hört sich so an, als hätten Sie Ihre Antwort bereits, aber ich empfehle Ihnen dringend, DBSR (db search replace) zu verwenden, um ALLE Vorkommen von domain1 durch domain2 zu ersetzen. Dafür gibt es Tools. Dieser ist ziemlich sauber: https://github.com/interconnectit/Search-Replace-DB

Der gesamte Prozess wird beschrieben. Es gibt eine gute Benutzeroberfläche.

Auf diese Weise können Sie sicher sein, dass in Bezug auf DB-Datensätze alles in Ordnung ist.

0
JMau

Ich bin der Ansicht, dass die folgenden Schritte auf dieser Seite ( http://codex.wordpress.org/Moving_WordPress ) genau das sind, wonach Sie suchen, wenn Sie die Frage nur mit einem Link beantworten möchten:

Ändern Ihres Domainnamens und Ihrer URLs

Sie müssen alle Instanzen Ihres alten Domainnamens sicher in Ihren neuen Domainnamen in der Datenbank ändern. Sie können dies mit einer der folgenden Methoden tun:

  1. Führen Sie nur Suchen und Ersetzen in der Tabelle wp_posts durch.

  2. Verwenden Sie das Skript Suchen und Ersetzen für WordPress-Datenbanken , um alle Instanzen sicher zu ändern. (Wenn Sie ein Entwickler sind, verwenden Sie diese Option. Es handelt sich um einen einstufigen Prozess im Gegensatz zum folgenden 15-stufigen Verfahren.)

  3. Optional können Sie auch ein Online-Tool verwenden (falls Sie sich nicht mit dem Hochladen von Skripten auf Ihren Server befassen möchten) Online WordPress Serialized PHP Search and Replace , mit dem eine alte Domain ersetzt werden kann oder URL mit einer neuen, während gleichzeitig die serialisierten Daten repariert werden.

Auf dieser Seite finden Sie auch viele andere hilfreiche WP Migrationsinformationen.

0
eyedarts

sehr einfache Methode

Installieren Sie dieses Plugin Velvet in Ihrem WordPress-Backend.

Gehen Sie nun zur Samt-Einstellung und geben Sie Ihre alte Domain ein und geben Sie eine neue Domain ein. Drücken Sie die Update-Taste. Du bist fertig

0
Atif Aqeel

Verwenden SieWP Migrate DBfür den Export datenbasierter Zip-Dateien, indem Sie Ihre URL ersetzen.

mit diesem Plugin können Sie kein Widget verlieren oder Daten serialisieren.

 enter image description here 

0
ravi patel

Obwohl Sie sagen, dass Sie Ihre wp_posts-Daten auf www.domain2.com aktualisiert haben, befinden sich in Ihrer wp_options-Tabelle noch die home und siteurl, die unter anderem geändert werden müssen.

Führen Sie die folgenden Schritte aus, um sicherzustellen, dass alle Ihre Daten auf Ihre neue Domain aktualisiert wurden:

  1. Gehen Sie und laden Sie Interconnect ITs Datenbank Search & Replace Script hier herunter
  2. Entpacken Sie die Datei und legen Sie den Ordner (über FTP) ab, in dem WordPress installiert ist (das Stammverzeichnis). Benennen Sie den Ordner inreplace( Screenshot ) um.
  3. Navigieren Sie zu dem neuen Ordner, den Sie in Ihrem Browser erstellt haben (z. B .: http://www.domain2.com/replace) und Sie sehen das Suchen/Ersetzen-Tool
  4. Bis zu diesem Punkt sollte es ziemlich selbsterklärend sein: Geben Sie Ihre alte URL in das Feldsearch for…und die neue URL in das Feldreplace with…ein

Sie können auf die Schaltfläche Probelauf unter Aktionen klicken, um zu sehen, was ersetzt wird, bevor Sie das Skript ausführen. Wenn Sie fertig sind, müssen Sie den Ordner /replace/ entfernen.

Wenn Ihre Website ziemlich klein ist, können Sie ...

  1. Loggen Sie sich in phpMyAdmin ein.
  2. Exportieren Sie Ihre Datenbank als SQL-Datei.
  3. Erstellen Sie eine Kopie Ihrer Datenbank-SQL-Datei, damit Sie eine Sicherungskopie Ihrer ursprünglichen Datenbank haben, falls Sie es vermasseln.
  4. Öffnen Sie Ihre Datenbank-SQL-Datei in einem Texteditor.
  5. Suchen und ersetzen Sie domain1.com durch domain2.com.
  6. Speichern Sie Ihre Datenbank-SQL-Datei.
  7. Loggen Sie sich wieder in phpMyAdmin ein.
  8. Importieren Sie Ihre Datenbank-SQL-Datei.

EDIT 18.03.2016

Nachdem Sie die obigen Schritte ausgeführt haben, fahren Sie bitte mit dem folgenden Verfahren fort:

Schritt 1 - Erstellen Sie eine zu verwendende Funktion.

function mbe_migrate_widgets() {

}

Schritt 2 - Geben Sie an, wonach gesucht und durch was ersetzt werden soll.

function mbe_migrate_widgets() {

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

}

Schritt 3 - Rufen Sie alle WordPress-Widgets ab.

function mbe_migrate_widgets() {

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

    global $wpdb;

    // Get all Widgets
    $widgets = $wpdb->get_results(
        "
        SELECT `option_id`, `option_name`
        FROM $wpdb->options
        WHERE `option_name`
        LIKE '%widget_%'
        "
    );

}

Schritt 4 - Durchlaufen Sie alle WordPress-Widgets und rufen Sie die Informationen für jedes Widget ab.

function mbe_migrate_widgets() {

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

    global $wpdb;

    // Get all Widgets
    $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 ) {

        // Retrieve the Widget data.
        $widget_data = get_option( $widget->option_name );

    }

    return $actions;

}

Schritt 5 - Führen Sie das Suchen und Ersetzen der Widget-Daten durch und aktualisieren Sie die Datenbankdatensätze.

function mbe_migrate_widgets() {

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

    global $wpdb;

    // Get all Widgets
    $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 ) {

        // Retrieve the Widget data.
        $widget_data = get_option( $widget->option_name );

        // Update the Widget data changing old domain to new domain.
        $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;

}

Schritt 6 - Benutzerdefinierte Funktion zum Ersetzen von rekursiven Arrays einschließen.

// Recursive String Replace - 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;

}

Hier hast du es. Führen Sie diese Funktion einmal aus und alle Ihre Widgets sollten auf magische Weise wieder funktionieren.

Hinweis: Es liegt an Ihnen, wo Sie diesen Code platzieren oder wie Sie ihn ausführen. Bitte ersetzen Sie auch die Variablen $old_domain und $new_domain entsprechend.

Extra Hinweis: Bitte beachten Sie auch, dass dieses Beispiel nur Widgets betrifft. Wenn andere Teile Ihrer Website URLs in serialisierten Daten enthalten, ändern Sie bitte Ihre Datenbankabfrage entsprechend. (Ich spreche über diesen Teil des Codes: SELECT option_id, option_name FROM $wpdb->options WHERE option_name LIKE '%widget_%')

Ich würde einen Link zu meinem Blog zu diesem Thema posten, möchte aber nicht "spammy" erscheinen. Dies ist im Wesentlichen ein Kopieren/Einfügen aus einem Artikel, den ich am 18.03.2016 auf meiner Website geschrieben habe. Der Inhalt dieser Antwort ist möglicherweise veraltet und der Inhalt des Artikels auf meiner Website wird möglicherweise in Zukunft relevanter. Wenn Sie interessiert sind, überprüfen Sie mein Profil auf einen Link zu meiner Website.

Nützliche Erklärung für serialisierte Daten: Anatomie eines serialize () 'ed-Werts .

0
Michael Ecklund