WordPress ohne Plugins auf eine andere Domain umziehen

Eine WordPress-Installation kann man auf mehreren Arten auf eine andere Domain umziehen, zum Beispiel von einem lokalen Testserver auf die richtige Domain. Zum einen kann man dafür natürlich diverse Plugins verwenden. Eines davon habe ich ja in einem Artikel bereits vorgestellt – Duplicator. Mit Duplicator funktioniert eine Backup oder ein Umzug total problemlos – bei Singlesite-Installationen – Multisiteunterstützung bietet dieses Plugin derzeit nicht.

Aber es ist ein Plugin. Man ist bei Plugins darauf angewiesen, dass sie weiterentwickelt werden. Außerdem legen viele Plugins auch zusätzliche Datenbankeinträge an und wie im Fall von Duplicator auch noch zusätzliche Ordner. Möchte man das alles nicht, so bleibt noch die pluginlose Variante eines Backups oder Umzugs.

Wie geht man dabei vor?

Um WordPress auf eine andere Domain oder einen anderen Server umzuziehen benötigen wir natürlich ein komplettes Backup der MySQL Datenbank und sämtliche Dateien und Ordner der bestehenden Installation. Alle die ihre Webseite ebenfalls bei All-Inkl hosten können für diesen Zweck mein erweitertes Script benutzen, je nach Serverkonfiguration funktioniert es aber auch bei den ein oder anderen Hostinganbieter.

Datenbankbackup

Ein Backup der Datenbank kann man zB mit phpMyAdmin oder MySQLDumper erstellen oder auch wieder einspielen. Meistens sind diese, oder zumindest eines dieser Programme bei den jeweiligen Hostinganbietern bereits vorinstalliert, bzw. ein anbieterspezifisches Programm.

Unter phpMyAdmin funktioniert dies sehr einfach. Die gewünschte Datenbank auswählen und in der Menüleiste von phpMyAdmin auf Exportieren klicken und bestätigen. Und schon können wir das Backup der MySQL Datenbank herunterladen.

Auch mit MySQLDumper ist total einfach ein Backup einer Datenbank zu erstellen. Einfach die Datenbank auswählen und ein neues Backup starten. Das erstellte Datenbankbackup können sie unter diesem Ordner finden – MYSQLDUMPER-PFAD/work/backup.

Backup der Dateien

Haben wir unsere Datenbank gesichert, dann folgt noch die Sicherung der Dateien und Verzeichnisse. Diese können zB direkt per FTP oder SSH von dem jeweiligen Server heruntergeladen werden. Ein gutes Programm für diesen Zweck wäre zB FileZilla.

Sobald wir sämtliche Dateien und Verzeichnisse und auch die Datenbank gesichert haben, können wir auch schon mit dem Serverumzug beginnen.

Der Umzug auf die neue Domain

Bei dem Umzug gehen wir in der umgekehrten Reihenfolge vor.

Aber zuerst wird auf dem neuen Server, sofern es sich auch um einen Serverumzug handelt, wieder eine Datenbank erstellt. In dieser importieren wir wieder die Daten unserer MySQL Datenbank, ebenfalls wieder mit zB phpMyAdmin oder MySQLDumper.

Auch sämtliche Daten – Dateien und Verzeichnisse – werden auf dem neuen Server / Domain kopiert – Stichwort FTP / SSH.

Wir sind an diesem Punkt allerdings noch nicht fertig!

Vorarbeiten für die neue Domain

Bevor wir unsere WordPress-Installation unter der neuen Domain nutzen können, müssen wir noch die Datenbankeinträge von der alten Domain auf die neue Domain ändern. Ansonsten versucht WordPress immer sich bei dem alten Pfad einzuloggen. Auch das Frontend funktioniert nicht. Es wird uns zwar bereits das eingestellte Theme angezeigt, jedoch ohne Inhalte. Sämtliche Beiträge verweisen ja noch auf die alte Domain.

Auch nicht zu vergessen die wp-config.php von WordPress zu ändern. Es müssen natürlich die Zugangsdaten der neuen Datenbank eingegeben werden. Abschließend natürlich abspeichern.

Möglichkeiten zur Änderung der Datenbankeinträge

Es gibt hierbei wieder mehrere Möglichkeiten die Datenbankeinträge zu ändern

Möglichkeit 1 – wir verwenden ein Plugin

Für alle Pluginfreunde hier eine Möglichkeit dies mit einem Plugin zu erledigen – Better Search Replace. Bevor wir dieses Plugin aber überhaupt verwenden können, müssen wir die wp-config.php bearbeiten und folgende zwei Zeilen zB nach der Zeile $table_prefix  = 'wp_'; hinzufügen und die Datei speichern. Erst dann ist es wieder möglich sich bei der WordPress-Installation der neuen Domain einzuloggen und auch das Plugin zu verwenden.

define( 'WP_SITEURL',      'http://neue-domain.com' );
define( 'WP_HOME',         'http://neue-domain.com' );

Mit Better Search Replace können wir dann sämtliche Datenbankeinträge der alten Domain suchen lassen und auf die Neue umschreiben lassen. Danach können diese beiden Zeilen wieder gelöscht werden.

Fazit: Funktioniert sehr einfach und problemlos

Möglichkeit 2 – direktes umbenennen in phpMyAdmin und anschließend das Plugin verwenden

SQL-Befehle können auch direkt in phpMyAdmin ausgeführt werden. Für den Suchen und Ersetzen Befehl wird folgender String verwendet.

update [TABELLENNAME] set [FELDNAME] = replace([FELDNAME],'[SUCHE]','[ERSETZE]');

zB

update wp_options set option_value = replace( option_value, 'http://alte-domain.com', 'http://neue-domain.com' );

Den Befehl einfach unter SQL einfügen und mit OK wird er dann übernommen. Danach können wir uns erst wieder in unsere WordPress-Installation der neuen Domain einloggen und wie in der Möglichkeit 1 mit dem Plugin Better Search Replace fortfahren.

Fazit: Ein bisschen aufwändiger als Möglichkeit 1

Möglichkeit 3 – alle Einträge direkt in phpMyAdmin ändern – ohne Plugin

Wir können natürlich auch ohne Plugin sämtliche Einträge in der Datenbank suchen und ersetzen lassen

Der Einfachheit halber habe ich hier eine Liste angelegt mit den Befehlen, welche wie in Möglichkeit 2 beschrieben einzeln nacheinander ausgeführt werden müssen.

update wp_comments set comment_content = replace( comment_content, 'http://alte-domain.com', 'http://neue-domain.com' );

update wp_links set link_url field = replace( link_url field, 'http://alte-domain.com', 'http://neue-domain.com' );

update wp_postmeta set meta_value field = replace( meta_value field, 'http://alte-domain.com', 'http://neue-domain.com' );

update wp_posts set posts_content field = replace( posts_content field, 'http://alte-domain.com', 'http://neue-domain.com' );

update wp_options set option_value = replace( option_value, 'http://alte-domain.com', 'http://neue-domain.com' );

Fazit: Noch aufwändiger. Bei dieser Variante könnte es allerdings sein, dass durch gewisse Plugins eventuell auch noch weitere Tabellen auf die neue Domain aktualisiert werden müssen.

Möglichkeit 4 – vor dem Import der Datenbank die Einträge suchen und ersetzen mit einem Editor – ohne Plugin

Bei relativ kleinen Datenbanken ist dies durchaus eine gute Möglichkeit. Dazu wird einfach die sql-Datei mit einem Texteditor ihrer Wahl geöffnet. Das einzige was dieser Editor beherrschen muss ist die Suchen und Ersetzen Funktion, und das beherrscht so ziemlich jeder. Sind die Einträge ersetzt worden, dann natürlich das Abspeichern nicht vergessen und erst dann die Datenbank auf dem neuen Server importieren.

Fazit: Einfach. Je nach der Größe der Datenbank kann es aber auch durchaus schon ein Weilchen dauern, bis die Datei geöffnet wird.

Möglichkeit 5 – Suchen und ersetzen von Einträgen über PHP – ohne Plugin

Ich bin mal beim Surfen auf ein kleines Script gestossen (stackoverflow.com), welches alle Datenbankeinträge prüft und mit dem neuen Eintrag ersetzt. Ich wollte allerdings nicht jedesmal die Datei selber bearbeiten und habe daher dieses Script etwas angepasst.

Man gibt sämtliche Daten ein und übernimmt die Einstellungen. Im Gegensatz zur Möglichkeit 4 muss hier, wie auch bei den ersten 3 die Datenbank schon vorher importiert werden.

Hierzu einfach mein Script herunterladen, entpacken und auf ihrem Server hochladen. Achten sie dabei darauf, dass das Script auch über eine Domain erreichbar ist zB http://ihre-domain.com/sql-search-replace.php.

Download – sql-search-replace.php

Benutzung des Scriptes logischerweise auf eigene Gefahr! Es wird keine Haftung für Datenverluste ganz gleich welcher Art übernommen und wurde bis PHP 5.6 getestet.

Nicht Vergessen!

Vergessen sie nicht nach dem einloggen in das WordPress-Dashboard die Permalink-Struktur zu aktualisieren bzw. zu speichern.




Bitte beachten Sie, dass dieser Beitrag bereits vor über einem Jahr geschrieben wurde und unter umständen nicht mehr aktuell ist.