Alle URLs in der WordPress-Datenbank lassen sich auf eine neue Adresse aktualisieren, entweder mit einem Plugin oder über die Kommandozeile.
Dafür gibt es mehrere Gründe:
https://alte-domain.tld auf https://neue-domain.tld. Nach dem Import der Datenbank werden mit diesen Schritten die enthaltenen URLs aktualisiert.www sollten die URLs angepasst werden. Andernfalls kann es zu Fehlern wie „Too many redirects“ oder „The page isn’t redirecting properly“ kommen.http auf https. Auch alle URLs in der Datenbank sollten dann die HTTPS-Version verwenden.
Zuerst sichern: Vor jeder Änderung ein Backup der Datenbank anlegen. Das Ersetzen lässt sich nicht per Klick rückgängig machen; mit einem Backup lässt sich der Ausgangszustand jederzeit wiederherstellen. Eine der beiden Varianten wählen.
Variante 1: phpMyAdmin (empfohlen bis ca. 50 MB)
.sql-Datei sicher aufbewahren.
Variante 2: per SSH (auch für grössere Datenbanken)
Bei grösseren Datenbanken empfiehlt sich der Export über die Kommandozeile. Wie das geht, ist Schritt für Schritt beschrieben unter Datenbank per SSH exportieren und importieren.
Empfohlen, solange der Login ins WordPress-Dashboard noch funktioniert. Falls der Login nach dem Umzug nicht mehr möglich ist, müssen zuerst die Werte home und siteurl in der Datenbank auf die neue Adresse gesetzt werden (in phpMyAdmin in der Tabelle wp_options). Danach ist der Login wieder möglich.
http://www.alte-domain.tldhttps://www.neue-domain.tldwpyh_) kann abweichen. Einfach alle vorhandenen Einträge markieren.
So sieht die ausgefüllte Eingabemaske aus (oben die beiden Adressfelder, darunter die Tabellenauswahl, unten der aktivierte Testlauf):
Kommt die alte Adresse in mehreren Schreibweisen vor (mit/ohne www., http:// statt https://), den Vorgang je Variante wiederholen. Zum Schluss unter Einstellungen → Permalinks einmal speichern, um die Permalink-Struktur neu zu schreiben.
Für technisch versierte Nutzer. Geschätzte Dauer: 10 bis 15 Minuten. Benötigt wird der Pfad zur WordPress-Installation, meist ~/public_html oder ~/public_html/ihre-domain.tld.
Terminal im cPanel (empfohlen)
Im cPanel auf Erweiterte Optionen → Terminal klicken (falls die Oberfläche auf Englisch ist: Advanced → Terminal).
Beim erstmaligen Öffnen erscheint eine Warnung, dass ein falscher Umgang mit Befehlszeilen-Tools Daten beschädigen kann. Den Hinweis mit Ich bin mir dessen bewusst und möchte fortfahren (bzw. I understand and want to proceed) bestätigen. Anschliessend öffnet sich ein schwarzes Fenster mit einer Eingabezeile.
Alternativ: SSH
Alternativ mit einem SSH-Client (z. B. PuTTY oder das Terminal des Betriebssystems) verbinden: ssh BENUTZERNAME@SERVER. Die weiteren Befehle sind identisch.
mkdir -p ~/bin
cd ~/bin
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
mv wp-cli.phar wp
wp --info
Erscheint command not found, liegt ~/bin nicht im Suchpfad. Dann neu anmelden oder das Werkzeug direkt mit ~/bin/wp aufrufen.
In den Ordner mit der wp-config.php wechseln (WP-CLI liest die Datenbank-Zugangsdaten von dort selbst aus):
cd ~/public_html
Vor dem Fortfahren sicherstellen, dass das Backup (siehe Abschnitt Backup der Datenbank) bereits erstellt ist.
Mit --dry-run wird nichts geschrieben, sondern nur angezeigt, was sich ändern würde. Adressen ohne abschliessenden Schrägstrich angeben, so werden auch Links auf die Startseite selbst und Canonical-Tags erfasst.
wp search-replace 'https://www.alte-domain.tld' 'https://www.neue-domain.tld' --all-tables-with-prefix --skip-columns=guid --report-changed-only --dry-run
Derselbe Befehl ohne --dry-run schreibt die Änderungen. --skip-columns=guid lässt die GUID-Spalte unangetastet (die GUID ist ein fester Kennzeichner für Feed-Reader, kein anzupassender Link).
wp search-replace 'https://www.alte-domain.tld' 'https://www.neue-domain.tld' --all-tables-with-prefix --skip-columns=guid --report-changed-only
Je nach Bestand zusätzliche Läufe für alte Schema-/www-Varianten:
wp search-replace 'http://www.alte-domain.tld' 'https://www.neue-domain.tld' --all-tables-with-prefix --skip-columns=guid --report-changed-only
wp search-replace 'https://alte-domain.tld' 'https://www.neue-domain.tld' --all-tables-with-prefix --skip-columns=guid --report-changed-only
wp search-replace 'http://alte-domain.tld' 'https://www.neue-domain.tld' --all-tables-with-prefix --skip-columns=guid --report-changed-only
wp cache flush
wp option get home
wp option get siteurl
Bei Verwendung eines Caching-Plugins dessen Cache zusätzlich im Backend leeren.