Suchen und Ersetzen in der WordPress-Datenbank
WordPress speichert die Adresse Ihrer Website nicht an einer einzigen Stelle. Sie steht in den Einstellungen, aber auch wörtlich in Ihren Beiträgen, bei Bildern und in Einstellungen von Themes, Plugins und Widgets. Wenn Sie die Adresse ändern, müssen Sie sie deshalb in der gesamten Datenbank ersetzen. Hier lesen Sie, wie das sicher funktioniert und warum ein einfacher SQL-Befehl Ihre Website beschädigen kann.
Wann benötigen Sie das?
- Ihre Website lief über http und läuft jetzt über https, und Sie sehen gemischte Inhalte (eine Seite über https, die Bestandteile über http lädt). Siehe auch Kein Schloss oder „Nicht sicher“: Mixed Content beheben.
- Sie ziehen Ihre Website auf eine andere Domain um oder von einer temporären Adresse auf Ihre eigentliche Domain.
- Sie haben manuell eine Kopie unter einer anderen Adresse erstellt, zum Beispiel eine Testseite.
Wenn Sie eine Website mit Installatron oder dem Website Manager klonen, passt dieser die Adressen in der Kopie selbst an. Siehe Klonen und eine Testumgebung (Staging) erstellen. Ziehen Sie nur zu einem anderen Hosting mit derselben Domain um, muss nichts geändert werden.
Warum kein einfaches SQL REPLACE?
In phpMyAdmin können Sie mit einem einzigen SQL-Befehl alle Texte ersetzen. Tun Sie das nicht für Adressen. Viele Einstellungen sind serialisiert gespeichert: PHP fügt die Länge jedes Textes hinzu. Das sieht so aus:
s:27:"http://example.com/logo.png";
s:27 bedeutet: Hier folgt ein Text mit 27 Zeichen. Machen Sie daraus https://, ist der Text 28 Zeichen lang, aber es steht weiterhin 27 da. PHP kann den Wert dann nicht mehr lesen, und die Einstellung geht stillschweigend verloren. Sie sehen dann zum Beispiel ein leeres Menü, ein verschwundenes Logo oder fehlende Widgets. Verwenden Sie daher ein Werkzeug, das diese Längen aktualisiert.
Zuerst ein Backup
Suchen und Ersetzen wirkt sofort und hat keinen Papierkorb. Erstellen Sie vorher einen Export Ihrer Datenbank, siehe Eine Datenbank exportieren, oder erstellen Sie mit einem Klick ein zusätzliches Backup in WebOké Backups, siehe WebOké Backups: ein Backup ansehen, wiederherstellen oder herunterladen.
Methode 1: WP-CLI im Terminal oder über SSH
WP-CLI ist das offizielle Kommandozeilenprogramm von WordPress. Bei uns verwenden Sie es als Befehl wp im Terminal von DirectAdmin oder über SSH. Dieses steht Ihnen nur in den Paketen mit SSH zur Verfügung. Welche Pakete das sind, lesen Sie unter Terminal im Browser.
- Öffnen Sie das Terminal und wechseln Sie in das Verzeichnis Ihrer WordPress-Installation:
cd domains/example.com/public_html - Prüfen Sie zuerst, was sich ändern würde, ohne etwas zu verändern:
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid --dry-run
Sie sehen pro Tabelle, wie viele Ersetzungen vorgenommen würden. - Stimmt das, führen Sie denselben Befehl ohne
--dry-runaus.
Einige Optionen im Befehl:
- Ohne zusätzliche Option arbeitet WP-CLI mit den Tabellen, die WordPress kennt. Verwendet ein Plugin eigene Tabellen mit demselben Präfix (zum Beispiel
wp_), fügen Sie--all-tables-with-prefixhinzu. Die Option--all-tablesbetrifft alle Tabellen in der Datenbank, auch die einer anderen Website, die sich zufällig darin befindet. --skip-columns=guidlässt die Spalteguidmit den festen Kennungen der Beiträge unverändert. WordPress empfiehlt, diese niemals zu ändern, da Feedreader sonst alte Beiträge erneut als neu anzeigen.- Geht bei komplexen Einstellungen etwas schief, arbeitet
--preciselangsamer, aber gründlicher.
Methode 2: ein Plugin
Haben Sie kein Terminal und kein SSH, verwenden Sie ein Plugin zum Suchen und Ersetzen, das serialisierte Daten unterstützt. Davon gibt es mehrere im Plugin-Verzeichnis von wordpress.org. Lesen Sie bei der Auswahl die Beschreibung: Dort muss stehen, dass das Plugin serialisierte Daten korrekt verarbeitet. Nutzen Sie auch hier zuerst den Testmodus, sofern das Plugin einen hat, und entfernen Sie das Plugin, wenn Sie fertig sind. Siehe auch WordPress-Plugins auswählen, bewerten und aufräumen.
http:// oder https:// davor. Ersetzen Sie nur example.com, ändern Sie auch E-Mail-Adressen wie info@example.com und andere Texte, in denen der Name vorkommt. Achten Sie auch auf einen Schrägstrich am Ende: Ersetzen Sie https://example.com/ durch https://example.net, werden die Adressen zusammengefügt.Nur die WordPress-Adresse und die Website-Adresse?
Gelangen Sie nach einer Änderung nicht mehr in die Verwaltung, weil WordPress Sie zu einer falschen Adresse weiterleitet? Dann passen Sie zuerst nur die Zeilen siteurl und home in der Tabelle wp_options an (das Präfix wp_ kann bei Ihnen anders lauten). Das sind gewöhnliche Texte, die Sie in phpMyAdmin ändern dürfen. Wie das geht, lesen Sie unter phpMyAdmin öffnen und verwenden. Danach erledigen Sie den Rest mit WP-CLI oder einem Plugin.
Im Anschluss
- Leeren Sie den Cache Ihres Cache-Plugins und Ihres Browsers.
- Zeigen Seiten einen 404-Fehler, speichern Sie unter Einstellungen > Permalinks einmal. Siehe Meine Website funktioniert nach dem Hochladen oder Umzug nicht.
- Prüfen Sie einige Seiten, Ihr Menü, Ihr Logo und ein Formular. Sehen Sie mit F12 in der Konsole nach, ob noch Meldungen zu gemischten Inhalten angezeigt werden.
Weiterlesen
- wp search-replace auf developer.wordpress.org (Englisch)
- WordPress manuell umziehen: Dateien, Datenbank und wp-config.php
Möchten Sie mehr lernen? Besuchen Sie den kostenlosen WordPress-Kurs, Lektion 3.2 www, Weiterleitungen und gemischte Inhalte oder Lektion 9.5 Eine WordPress-Website umziehen.
