
🔄 So ersetzen Sie eine alte Domain durch eine neue mit phpMyAdmin: eine Anleitung für WordPress
Sie haben eine Website auf eine neue Domain umgezogen, und sie ist nicht erreichbar. Oder sie öffnet sich, aber ohne Styles. Oder das Admin-Panel lässt Sie nicht herein. Jeder, der WordPress schon einmal manuell migriert hat, kennt diesen Moment: Die Datenbank erinnert sich noch an die alte URL, und die Website versucht verzweifelt, Ressourcen von einer Adresse zu laden, die es nicht mehr gibt.
Vier SQL-Abfragen in phpMyAdmin lösen das Problem in fünf Minuten. Keine Plugins, kein WP-CLI, keine Panik. Nachfolgend eine Schritt-für-Schritt-Anleitung vom Auffinden der aktuellen Domain bis zur abschließenden Prüfung. Mit Anpassungen für nicht-standardmäßige Tabellenpräfixe, HTTPS und serialisierte Daten.
💡 Kurzüberblick:
- Aktuelle Domain in der Tabelle wp_options ermitteln: die Felder siteurl und home
- Vier UPDATE-Abfragen im SQL-Tab von phpMyAdmin ausführen
- Administrator-Passwort über wp_users zurücksetzen, falls das Admin-Panel Sie nicht einlässt
- Permalinks in den WordPress-Einstellungen speichern, um die Styles wiederherzustellen
- Für Shops und Multisites Better Search Replace oder WP-CLI verwenden: ein normales REPLACE zerstört serialisierte Arrays
Wo Sie anfangen: die aktuelle Domain in der Datenbank finden
Bevor Sie ersetzen, stellen Sie sicher, dass Sie wissen, welche Domain derzeit für die Website hinterlegt ist. Das spart Zeit, falls die Website schon einmal umgezogen wurde und eine dritte, „zwischengeschaltete" URL in der Datenbank verblieben sein könnte.
Öffnen Sie phpMyAdmin, wählen Sie die Datenbank der Website aus und suchen Sie die Tabelle wp_options. Sie enthält zwei Zeilen: siteurl (die WordPress-Adresse) und home (die Website-Adresse). Diese Werte werden wir zuerst ändern.

Falls das Tabellenpräfix nicht dem Standard entspricht (zum Beispiel mysite_ statt wp_), suchen Sie nach der Tabelle mysite_options. Das Präfix finden Sie in der Datei wp-config.php: die Variable $table_prefix.
Vier SQL-Abfragen für eine vollständige Domain-Ersetzung
Führen Sie jede Abfrage einzeln im Tab „SQL" von phpMyAdmin aus. Stellen Sie vor der Ausführung sicher, dass Sie eine Sicherung der Datenbank erstellen: Ein Export über phpMyAdmin dauert eine Minute und bewahrt Sie vor irreversiblen Fehlern.
Ersetzen Sie http://www.oldurl durch http://www.newurl in allen nachfolgenden Abfragen. Läuft die Website über HTTPS, verwenden Sie https:// in beiden Adressen.
1. Aktualisierung von HOME und SITEURL
Dies ändert die beiden Schlüsseladressen in wp_options. Ohne diesen Schritt öffnet sich die Website schlicht nicht unter der neuen Domain; WordPress wird weiterhin versuchen, auf die alte umzuleiten.
1 UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldurl', 'http://www.newurl') WHERE option_name = 'home' OR option_name = 'siteurl';
2. Aktualisierung der Beitrags-GUIDs
Das Feld guid in wp_posts speichert die dauerhafte Kennung für jeden Beitrag. Die Ersetzung ist für den Betrieb der Website nicht kritisch; WordPress nutzt die GUID nicht für das Routing. Aber wenn Leser Ihre Website über RSS-Reader verfolgen, ist die Sauberkeit der GUIDs relevant: Alte URLs im Feed führen zu defekten Links.
1 UPDATE wp_posts SET guid = replace(guid, 'http://www.oldurl', 'http://www.newurl');
3. Aktualisierung der Beitragsinhalte
Die umfangreichste Abfrage. post_content enthält den Text aller Seiten und Beiträge, einschließlich eingebetteter Bilder und interner Links. Nach der Ausführung werden alle Bilder in den Inhalten von der neuen Domain geladen.
1 UPDATE wp_posts SET post_content = replace(post_content, 'http://www.oldurl', 'http://www.newurl');
4. Aktualisierung der Metafelder
Benutzerdefinierte Felder, Plugin-Einstellungen, Theme-Daten: All das ist in wp_postmeta gespeichert. Überspringen Sie diese Abfrage, erhalten Sie defekte Links an scheinbar unerwarteten Stellen: das Logo im Footer, der Hintergrund im Customizer, die URL in Ihrem SEO-Plugin.
1 UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://www.oldurl', 'http://www.newurl');
Nachdem Sie alle vier Abfragen ausgeführt haben, öffnen Sie die Website unter der neuen Domain. Wenn alles korrekt gemacht wurde, sollte es keine Probleme geben. Aber manchmal passiert etwas anderes: eine Meldung „Fehler beim Aufbau einer Datenbankverbindung" oder die Seite öffnet sich ohne Styles.

Das Erste, was Sie in dieser Situation brauchen, ist Zugang zum Admin-Panel.
So erhalten Sie Zugang zum Admin-Panel, wenn das Passwort verloren ist oder die Website Sie nicht einlässt
Der Kunde hat kein Passwort hinterlassen. Oder Sie haben sich durch die Domain-Änderung selbst ausgesperrt, und /wp-admin wirft Sie in eine endlose Weiterleitung. Hier sind zwei Wege, um Administratorrechte direkt über die Datenbank zu erlangen.
Administrator-Passwort über phpMyAdmin zurücksetzen
Öffnen Sie die Tabelle wp_users (Ihr Präfix kann abweichen: mysite_users usw.). Suchen Sie den Benutzer mit Administratorrechten und klicken Sie auf „Bearbeiten":

Wählen Sie in der Zeile user_pass aus dem Dropdown-Menü die Funktion MD5 aus und geben Sie das neue Passwort in das angrenzende Feld ein. Klicken Sie auf „Go":

Hinweis: Modernes WordPress verwendet phpass (bcrypt-Hashes), nicht MD5. Wenn Sie jedoch ein WordPress-Passwort eingeben, prüft es den Hash der Reihe nach: Schlägt die bcrypt-Prüfung fehl, greift die MD5-Rückfallebene und das Passwort wird sofort in das aktuelle Format umgehasht. Deshalb funktioniert MD5 über phpMyAdmin als temporärer Schlüssel.
Einen Administrator per PHP anlegen
Eine alternative Methode besteht darin, einen neuen Administrator-Benutzer programmatisch hinzuzufügen. Der Code wird in die functions.php des aktiven Themes oder über ein MU-Plugin eingefügt.
Fügen Sie Folgendes zur functions.php Ihres Child-Themes hinzu:
1 function sdstudio_add_admin_user() { 2 $userdata = array( 3 'user_login' => 'tempadmin', 4 'user_pass' => 'TempPass123!', 5 'user_email' => '[email protected]', 6 'role' => 'administrator', 7 ); 8 wp_insert_user( $userdata ); 9 } 10 add_action( 'init', 'sdstudio_add_admin_user' );
Die Funktion wp_insert_user() legt einen Benutzer mit den übergebenen Parametern an, und der init-Hook wird bei jeder WordPress-Anfrage ausgelöst. Rufen Sie einfach einmal eine beliebige Seite der Website auf, und der Benutzer wird erstellt.
Nach der Anmeldung im Admin-Bereich löschen Sie unbedingt sowohl die Funktion aus der functions.php als auch den von Ihnen angelegten temporären Benutzer. Einen tempadmin mit einem Klartext-Passwort zu hinterlassen, ist ein Sicherheitsrisiko.
Defekte Bilder und Styles nach einer Domain-Änderung beheben
Sie haben Zugriff auf das Admin-Panel, aber Bilder werden nicht geladen und das Layout ist zerstört. In neun von zehn Fällen hilft eine einfache Maßnahme.
Gehen Sie zu „Einstellungen" → „Permalinks":

Ändern Sie nichts; klicken Sie lediglich auf „Änderungen speichern":

WordPress baut die URL-Struktur neu auf, aktualisiert den Rewrite-Rules-Cache und leert den internen Redirect-Cache. Danach sind die Bilder in der Regel wieder an ihrem Platz.
Hat das nicht geholfen, ist die alte Domain in serialisierten Arrays eingebettet. Ein einfaches REPLACE in SQL zerstört diese: Die String-Länge in einem serialisierten Array ist als Zahl fest kodiert, und das Ersetzen von „alte-lange-domain.ru" durch „neue-kurz.io" verändert diese Länge, wodurch das Array unlesbar wird. Installieren Sie das kostenlose Plugin Better Search Replace; es verarbeitet Serialisierung korrekt und zeigt Ihnen vor dem Ersetzen an, wie viele Treffer in jeder Tabelle gefunden wurden.
Für Websites mit WP-CLI geht es mit einem Befehl noch einfacher:
1 wp search-replace 'http://olddomain.ru' 'https://newdomain.io' --all-tables --dry-run
Das Flag --dry-run zeigt zunächst an, was ersetzt würde, ohne Änderungen vorzunehmen. Sind Sie sicher, führen Sie den Befehl ohne das Flag aus. WP-CLI search-replace verarbeitet serialisierte Daten ebenfalls und ist schneller als die Weboberfläche.
Das folgende Video zeigt den gesamten Ablauf von der Anmeldung bei phpMyAdmin bis zur Überprüfung der Website nach der Ersetzung:
⁉️🤔 Häufig gestellte Fragen
Ist die Verwendung von phpMyAdmin für die Domain-Ablösung zwingend erforderlich?
Nein. Wenn die Website noch nicht umgezogen wurde, führen Duplicator oder All-in-One WP Migration die Ersetzung beim Deployment automatisch durch. Befindet sich die Website bereits auf dem neuen Hosting ohne Admin-Zugang, bleiben Ihnen SQL-Abfragen über phpMyAdmin, Adminer oder WP-CLI. Für die meisten Webmaster ist phpMyAdmin der direkteste und kontrollierteste Weg: Sie sehen jeden Vorgang, anstatt sich auf die Blackbox eines Plugins zu verlassen.
Was tun, wenn das Tabellenpräfix nicht wp_ lautet?
Prüfen Sie den Wert der Konstante
$table_prefixin derwp-config.php. Üblicherweise lautet erwp_, aber Hoster oder Sicherheits-Plugins wie Solid Security (ehemals iThemes Security) ändern ihn gelegentlich in eine zufällige Zeichenfolge. Ersetzen Sie in allen obigen Abfragenwp_durch Ihr Präfix (zum Beispielxyz123_optionsanstelle vonwp_options).
Warum wird die Website nach der Ersetzung ohne Styles geöffnet?
Die alte Domain verbleibt in Theme-Einstellungen, Cache oder CDN. Setzen Sie die Permalinks zurück (Anleitung oben) und leeren Sie den Cache Ihres Caching-Plugins. Wenn Sie Cloudflare oder ein anderes CDN nutzen, invalidieren Sie den Cache auf Anbieterseite. Hat das nicht geholfen, führen Sie Better Search Replace aus: Die alte URL steckt wahrscheinlich in einem serialisierten
theme_mods_*-Array.
Die Website läuft über HTTPS, aber nach dem Umzug funktioniert das Zertifikat nicht. Was tun?
Stellen Sie sicher, dass Sie in allen Abfragen
https://(nichthttp://) verwendet haben. Prüfen Sie, ob beide Adressen in den WordPress-Einstellungen nach dem Einloggen ins Admin-Panel mithttps://beginnen. Das SSL-Zertifikat selbst wird auf Hosting-Seite konfiguriert, über das Control Panel oder das kostenlose Let's Encrypt. Dies ist ein separater Vorgang, der nichts mit der Datenbank zu tun hat.
Kann ich die Domain ohne Zugriff auf phpMyAdmin ersetzen?
Ja. WP-CLI:
wp search-replace 'http://olddomain' 'http://newdomain' --all-tables. Nur FTP: Fügen Sie die Zeilendefine('WP_HOME','http://newdomain');unddefine('WP_SITEURL','http://newdomain');in diewp-config.phpein. Dies überschreibt die Adressen vorübergehend und verschafft Ihnen Admin-Zugang. Entfernen Sie die Zeilen nach dem Einloggen und speichern Sie die Einstellungen über die Oberfläche.
Muss ich die GUID in wp_posts ändern oder kann ich das überspringen?
Für den Betrieb der Website ist das nicht nötig. WordPress nutzt die GUID nicht für das Routing, sondern nur zur Identifikation von Beiträgen in RSS-Feeds. Wenn Leser Ihre Website aktiv per RSS verfolgen, ist die Ersetzung sinnvoll. Wenn nicht, können Sie die dritte der vier Abfragen folgenlos überspringen.
Nach der Domain-Ablösung per SQL sind einige Plugin-Einstellungen verloren gegangen. Woran liegt das?
Plugins wie WooCommerce, Advanced Custom Fields und Slider speichern URLs in serialisierten Arrays in
wp_postmeta. Ein einfachesREPLACEberücksichtigt den String-Längenzähler in der Serialisierung nicht und zerstört die Struktur. Die Lösung ist Better Search Replace oderwp search-replace(diese deserialisieren das Array, ersetzen den String und serialisieren es zurück). Wenn Sie es bereits beschädigt haben, stellen Sie die Datenbank aus dem Backup wieder her und wiederholen Sie die Ersetzung mit dem geeigneten Werkzeug.
Vorgehen in komplexen Fällen: Shops, Multisites und große Datenbanken
Die Domain-Ablösung per SQL ist ein Fünf-Minuten-Vorgang, wenn Sie direkten Zugriff auf phpMyAdmin und ein Standard-Tabellenpräfix haben. Es gibt jedoch Situationen, in denen die manuelle Ersetzung per REPLACE ein echtes Risiko darstellt.
Online-Shops auf WooCommerce mit Hunderttausenden von Bestellungen. Multisite-Netzwerke mit Dutzenden separater Tabellen für jede Subsites. Websites, bei denen URLs in serialisierten Arrays hartcodiert sind (Theme-Einstellungen, Page Builder, Slider). In solchen Fällen kann ein einzelnes SQL-REPLACE die Datenstruktur beschädigen, und die Wiederherstellung der Datenbank aus dem Backup kostet mehr Zeit als eine von vornherein saubere Ersetzung.
Better Search Replace oder WP-CLI search-replace beherrschen die Serialisierung; nutzen Sie diese. Und wenn die Datenbankgröße ein Gigabyte übersteigt und die Kosten eines Fehlers hoch sind, kostet eine Stunde Arbeit eines Entwicklers weniger als die Wiederherstellung eines Shops, dessen Ausfallzeit Geld kostet.
Das Thema Website-Umzug unter Erhalt des SEO und ohne Traffic-Verlust haben wir in einem separaten Leitfaden behandelt. Und wenn Sie nach der Ersetzung auf einen spezifischen Fehler stoßen, schreiben Sie in die Kommentare, und wir helfen bei der Diagnose.



