Zum Inhalt springen
Inhalt
WordPress

Suchen und Ersetzen in Ihrer WordPress-Datenbank

Maschinelle Übersetzung. Das englische Original ist verfügbar.

WordPress speichert absolute URLs in Dutzenden von Datenbanktabellen, sodass ein Domainwechsel oder eine Umstellung auf SSL alte Adressen verstreut in Beiträgen, Optionen und Plugin-Einstellungen hinterlässt: Mit Suchen und Ersetzen bereinigen Sie diese sicher. Diese Anleitung behandelt die zwei unterstützten Wege dafür in KPanel, warum eine verbreitete dritte Methode Daten beschädigt und wie Sie das Ergebnis überprüfen.

Wann Sie es brauchen

  • Beim Wechsel von http:// zu https:// nach dem Aktivieren von SSL.
  • Bei einem Domainwechsel, zum Beispiel von old-brand.co.nz zu new-brand.co.nz.
  • Nachdem Staging in die Produktion übertragen wurde, wenn der Staging-Hostname noch fest in der Datenbank steht.
  • Beim Stilllegen eines alten Asset-Hosts, um jede Bild-URL auf einmal umzustellen.
  • Zum Beheben eines Tippfehlers in vielen Beiträgen, etwa einer alten Telefonnummer oder eines nicht mehr geführten Produktnamens.

Suchen und Ersetzen schreibt Zeilen in allen Tabellen auf einmal um, und es gibt kein Rückgängigmachen pro Zeile. Erstellen Sie vor dem Start jedes Mal ein Backup, auch bei einer Änderung, die trivial aussieht. KPanel erstellt automatisch eines, wenn Sie die unten beschriebenen integrierten Werkzeuge verwenden, aber wenn Sie den Befehl selbst ausführen, sind Sie dafür verantwortlich. Siehe Ein Backup erstellen.

Warum Sie nicht einfach ein SQL-REPLACE ausführen können

Dies ist der folgenschwerste Fehler bei der Arbeit mit WordPress-Datenbanken, daher lohnt es sich, ihn zu verstehen, bevor Sie eine Methode wählen.

WordPress speichert Plugin-Einstellungen, Theme-Optionen und Widget-Daten als serialisierte PHP-Strings. Ein serialisierter String speichert die Länge jedes darin enthaltenen Werts, etwa so:

a:1:{s:3:"url";s:26:"http://old-domain.co.nz/x";}

Das s:26 besagt, dass die URL 26 Zeichen lang ist. Ersetzen Sie http:// durch https:// mit einem einfachen SQL-REPLACE(), wird der Text 27 Zeichen lang, während die gespeicherte Länge weiterhin 26 angibt. PHP weigert sich dann, die gesamte Option zu deserialisieren, und die Einstellung fällt stillschweigend auf leer zurück. Einstellungen des Theme-Customizers verschwinden, Slider verlieren ihre Slides, Plugin-Lizenzen melden sich selbst ab.

Das WP-CLI-Suchen-und-Ersetzen, das KPanel ausführt, deserialisiert jeden Wert, ersetzt darin und serialisiert ihn mit korrigierten Längen erneut. Deshalb ist es die einzige hier dokumentierte Methode.

Führen Sie niemals UPDATE wp_options SET option_value = REPLACE(...) oder das Gleiche in phpMyAdmin auf einer WordPress-Datenbank aus. Es sieht aus, als hätte es funktioniert, es meldet betroffene Zeilen, und es zerstört stillschweigend jede serialisierte Einstellung, die es berührt hat. Eine Reparatur ist nur durch das Wiederherstellen eines Backups möglich.

Methode 1: Die Karte Suchen & Ersetzen

Das ist für fast alle die richtige Wahl. Sie ist in jedem WordPress-Plan verfügbar.

  1. Melden Sie sich bei KPanel an und klicken Sie in der linken Seitenleiste auf Websites.
  2. Klicken Sie auf die Website.
  3. Öffnen Sie den Tab WordPress und dann den Bereich Schnellaktionen.
  4. Suchen Sie die Karte Suchen & Ersetzen und klicken Sie auf Konfigurieren.
  5. Geben Sie den vorhandenen Text in Suchen (alter Wert) ein.
  6. Geben Sie den neuen Text in Ersetzen durch ein.
  7. Lassen Sie Testlauf (nur Vorschau, keine Änderungen) angehakt und klicken Sie auf Vorschau.

Die Karte Suchen & Ersetzen in den Schnellaktionen von KPanel

Der Testlauf meldet, wie viele Ersetzungen vorgenommen würden, und schlüsselt die Anzahl nach Tabelle und Spalte auf, sodass Sie genau sehen, wo die Änderung greifen würde, bevor Sie sie ausführen.

Wenn die Vorschau stimmt:

  1. Entfernen Sie den Haken bei Testlauf.
  2. Klicken Sie auf Ausführen.
  3. Bestätigen Sie den Dialog.

Vor Beginn der Ersetzung wird automatisch ein vollständiges Backup erstellt, und der Lauf umfasst alle Tabellen, einschließlich der von Plugins angelegten.

Suchen Sie nach dem spezifischsten String, der möglich ist. Wenn Sie old-domain.co.nz ersetzen, werden auch mail.old-domain.co.nz und staging.old-domain.co.nz umgeschrieben, was selten gewünscht ist. Wenn Sie das Schema einbeziehen, wie in https://old-domain.co.nz, bleibt der Treffer eng gefasst.

Methode 2: WP-CLI über die Konsole

Die Konsole bietet Ihnen dieselbe Engine mit mehr Kontrolle über die Optionen. Sie ist einer der Bereiche, die in verwalteten Plänen erscheinen; in anderen Plänen zeigt die Tab-Leiste stattdessen einen Link +8 bei Managed.

Öffnen Sie die Website, dann WordPress, dann Konsole. Die Eingabeaufforderung beginnt bereits mit wp, geben Sie also nur den Rest des Befehls ein.

Zuerst die Vorschau:

search-replace 'http://old-domain.co.nz' 'https://old-domain.co.nz' --all-tables --dry-run

Dann die echte Ausführung:

search-replace 'http://old-domain.co.nz' 'https://old-domain.co.nz' --all-tables

Die Konsole erstellt kein Backup für Sie. Das automatische Backup vor dem Lauf gibt es nur, wenn Sie die Karte Suchen & Ersetzen aus Methode 1 verwenden. Wenn Sie den Befehl hier ausführen, erstellen Sie zuerst selbst ein Backup über die Seite Sicherungen der Website.

Nützliche Optionen:

OptionWas sie bewirkt
--all-tablesBezieht von Plugins angelegte benutzerdefinierte Tabellen ein, nicht nur die WordPress-Kerntabellen
--dry-runMeldet, was sich ändern würde, und schreibt nichts
--preciseVerwendet für die Ersetzung PHP statt SQL. Langsamer, kommt aber mit schwierigen serialisierten Strukturen zurecht
--skip-columns=guidLässt die GUIDs der Beiträge unverändert (siehe unten)
--report-changed-onlyBeschränkt die Ausgabe auf Tabellen, die sich tatsächlich geändert haben

Ein Hinweis zu GUIDs

Jeder WordPress-Beitrag hat eine Spalte guid. Obwohl sie wie eine URL aussieht, ist sie eine Kennung und kein Link, und Feedreader erkennen daran, ob sie einen Eintrag bereits gesehen haben. Wenn Sie sie umschreiben, kann jeder Beitrag in Ihrem Feed wieder als neu erscheinen.

Schreiben Sie GUIDs um, wenn Sie die Domain dauerhaft wechseln und neu beginnen. Überspringen Sie sie mit --skip-columns=guid, wenn Sie nur auf derselben Domain von HTTP zu HTTPS wechseln.

Domainwechsel: Verwenden Sie stattdessen die Karte für die Website-URL

Wenn es darum geht, die Website auf eine neue Domain umzuziehen, beginnen Sie nicht mit Suchen und Ersetzen. Die Karte Website-URL ändern im selben Bereich Schnellaktionen aktualisiert die Optionen siteurl und home und führt die Ersetzung in allen Tabellen in einem einzigen Vorgang in der richtigen Reihenfolge aus. Andersherum vorzugehen kann dazu führen, dass WordPress seinen eigenen Admin-Bereich nicht mehr laden kann.

Nach der Ersetzung

Gehen Sie diese Liste durch, bevor Sie die Arbeit als erledigt betrachten.

  1. Leeren Sie den Cache. Führen Sie im Bereich Schnellaktionen die Aktion Cache leeren aus. Wenn die Website den Full-Page-Cache verwendet, leeren Sie ihn unter WordPress und dann Caching.
  2. Leeren Sie die Rewrite-Regeln. Führen Sie im selben Bereich Rewrites leeren aus, oder öffnen Sie in wp-admin Einstellungen und dann Permalinks und klicken Sie auf Änderungen speichern, ohne etwas zu ändern.
  3. Leeren Sie das CDN, falls die Website es nutzt, unter Leistung und dann Kapsule CDN. Siehe Den Kapsule CDN-Cache leeren.
  4. Laden Sie die Website in einem privaten Fenster, damit Ihr Browser-Cache Sie nicht in die Irre führen kann.
  5. Prüfen Sie das Schloss-Symbol. Ein fehlendes Schloss oder eines mit Warnung nach einer SSL-Umstellung bedeutet, dass URLs übrig geblieben sind: Behebung von Warnungen zu gemischten Inhalten.
  6. Klicken Sie sich durch die heiklen Seiten. Slider auf der Startseite, das Logo im Header, jede mit einem Page Builder erstellte Seite und bei einem Shop den Checkout. Diese enthalten die URLs, die in serialisierten Optionen gespeichert sind.
  7. Leeren Sie jedes Caching-Plugin über dessen eigene Einstellungsseite.

Fehlerbehebung

Der Testlauf meldet null Ersetzungen. Der String steht nicht in genau dieser Form in der Datenbank. Prüfen Sie auf einen abschließenden Schrägstrich, ein www.-Präfix oder das Schema. Suchen Sie zunächst nur nach dem reinen Hostnamen, um zu bestätigen, dass er überhaupt vorhanden ist.

Nach einem Domainwechsel sind Bilder defekt. Medien-URLs stehen in wp_posts und wp_postmeta und werden von --all-tables erfasst, aber ein CDN oder ein Plugin zur Bildoptimierung speichert möglicherweise eigene umgeschriebene Kopien im Cache. Leeren Sie das CDN und den Cache des Plugins und laden Sie die Seite dann neu.

Nach der Ersetzung sind Einstellungen verschwunden. Das ist das Serialisierungsproblem, und es bedeutet, dass die Änderung mit reinem SQL statt mit den hier beschriebenen Werkzeugen vorgenommen wurde. Stellen Sie das vor dem Lauf erstellte Backup wieder her: Wiederherstellen aus einem Backup.

Staging-URLs tauchen immer wieder auf. Etwas füllt sie erneut ein, meist eine geplante Übertragung oder eine zwischengespeicherte Option. Prüfen Sie den Ablauf unter Der WordPress-Staging-Workflow und stellen Sie sicher, dass URLs umschreiben beim Übertragen angehakt ist.

War das hilfreich?

Sind Sie eine KI? Diese Seite als Markdown lesen

Verwandte Artikel

WordPress installierenDieser Leitfaden behandelt zwei Installationswege, die Verwaltung Ihrer Zugangsdaten, den Zugriff auf das Admin-Panel und die ersten Schritte, die Sie nach…WordPress: Wo Sie beginnen solltenWas KapsuleHost für eine WordPress-Website übernimmt, was weiterhin in Ihrer eigenen Verantwortung liegt, und welche Anleitung für welche Aufgabe die richtige…WordPress Auto-UpdatesAuto-Updates halten WordPress-Kern, Plugins und Themes aktuell, ohne dass Sie Release-Notes im Auge behalten müssen, und zwar auf sichere Weise: Vor jedem…Zahlungs-Gateways für einen WooCommerce-ShopDas Tab „Zahlungen“ listet die für Ihren WooCommerce-Shop verfügbaren Payment Gateways auf, zeigt an, welche installiert und welche aktiviert sind, und bietet…

Kommen Sie nicht weiter?

Fragen Sie Kora, die Ihr Konto kennt, oder wenden Sie sich an unser Team.

KontaktSupport kontaktieren