Hier erklären wir wie man mit einer WordPress CMS Installation auf eine andere Domain umzieht.

Mit WordPress auf eine andere Domain umziehen

Hört sich ganz schön kompliziert an, mit einem kompletten Content Management System wie WordPress den Umzug auf eine andere Domain zu bewerkstelligen.
Das klingt erstmal nach einem großartigen Vorhaben, oder?
Als erstes müssen wir ein Backup anlegen. Das ist ganz klar vor jedem Eingriff zu unternehmen.
Alles was ich folgend beschreibe, wird von der Konsole aus, auf dem Server ausgeführt.

Wir erstellen ein Backup vor dem WordPress-Umzug auf eine andere Domain

Dazu benutzen wir dieses Script (hier als root). Wer nicht als root arbeiten möchte, muss den Datenbank-User noch als Argument mit angeben.

#!/bin/bash
# This script creates a compressed backup archive of the given directory and the given MySQL table
# Set the date format, filename and the directories where your backup files will be placed and which directory will be archived.
# USAGE: ./backup-wordpress wordpress_dir db_name db_password
NOW=$(date +"%Y-%m-%d-%H%M")
FILE="$1.$NOW.tar"
BACKUP_DIR="/var/www/backups"
WWW_DIR=$1
# MySQL database credentials
DB_USER="$2"
DB_PASS="$3"
DB_NAME="$2"
DB_FILE="$1.$NOW.sql"
# Create the archive and the MySQL dump
tar -czvf $BACKUP_DIR/$FILE $WWW_DIR
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/$DB_FILE

Wir nennen das script z.B. backup-wordpress, machen es ausführbar und starten es:

#chmod ug+x ./backup-wordpress
#./backup-wordpress /var/www/html/mywordpress mydb mydbpasswd

Im Domain Name System (DNS) wird der neue Domain Name für die WordPress Installation erstellt

Hier die benötigten Einträge am Beispiel der Verwendung von bind auf einem Unix System:

in der Zonendatei /etc/bind/new_domain.com.zone

$ORIGIN new_domain.com.
$TTL 1h ; Default TTL
@ IN SOA ns1.ns.com. webmaster.ns.com. (
2019010101 ; serial
1h ; slave refresh interval
15m ; slave retry interval
2w ; slave copy expire time
1h ; NXDOMAIN cache time
)

@ IN NS ns1.ns.com.
@ IN NS ns2.ns.com.

@ IN A 192.168.1.100
@ IN AAAA 2000:0001:0001:0001::1
mail IN A 192.168.1.100
mail IN AAAA 2000:0001:0001:0001::1
www IN A 192.168.1.100
www IN AAAA 2000:0001:0001:0001::1

subdomain IN A 192.168.1.100
subdoamin IN AAAA 2000:0001:0001:0001::1

@ IN MX 10 mail.new_domain.com.
@ IN TXT "v=spf1 a mx -all"
_dmarc IN TXT "v=DMARC1;p=quarantine;fo=1;"

Dann noch ein Eintrag in der /etc/bind/named.conf.local für die neue Zone:

// zone IN new_domain.com
zone "new_domain.com" IN {
        type master;
        file "/etc/bind/new_domain.com.zone";
        ...
};

Falls kein eigener Name-Server zur Verfügung steht, macht das bitte entsprechend in der Oberfläche eures Domain Name Providers.
Alibaba Cloud

Wir erstellen einen neuen Host in der Webserver Config

Nachdem der DNS korrekt für unsere neue Domäne konfiguriert ist und auf unseren Webserver zeigt, legen wir auf diesem einen neuen Host für unsere WordPress Installation an.
Hier eine funktionierende Grund-Konfiguration für WordPress am nginx Webserver in der Datei

/etc/nginx/sites-available/new_domain.com.conf

server {
  listen 80;
  listen [::]:80;
  server_name new_domain.com www.new_domain.com;
  root /var/www/html/new_domain.com;
  client_max_body_size 256m;
  index index.php;

  location / {
  try_files $uri $uri/ /index.php?$args;
  }
  # Add trailing slash to */wp-admin requests.
  rewrite /wp-admin$ $scheme://$host$uri/ permanent;
  location ~* \.(jpg|jpeg|png|gif|css|js|ico)$ {
  expires max;
  log_not_found off;
  }
  location ~ \.php$ {
  try_files $uri =404;
  include /etc/nginx/fastcgi_params;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}

Nun müssen wir den neuen Host aktivieren und den Webserver neu starten:

#ln -s /etc/nginx/sites-available/new_domain.com.conf /etc/nginx/sites-enabled/new_domain.com.conf
#service nginx restart

Jetzt passen wir die URL Einträge in der Datenbank von WordPress an

Das folgende Script für die Konsole, um die Datenbankeinträge in der WP-Datenbank zu ändern, nennen wir z.B. set_WP_database_after_migration und machen es ausführbar mit

$chmod ug+x ./set_WP_database_after_migration

#!/bin/bash
# usage: ./set_WP_database_after_migration db_name old_domainname new_domainname
mysql -Bse "
USE $1;
UPDATE wp_options SET option_value = replace(option_value, 'https://$2', 'https://$3') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'https://$2','https://$3');
UPDATE wp_posts SET post_content = replace(post_content, 'https://$2', 'https://$3');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'https://$2','https://$3');"

Ein “sed” auf der Konsole ist die Brutalo-Methode. Sie geht allerdings auf Nummer sicher, dass danach keine Links auf die alte Domain mehr existieren.

/dir ist das WordPress Installations-Verzeichnis.

$find /dir -type f -print0 | xargs -0 sed -i 's#https://old_domain#https://new_domain#g'

Der Umzug ist erledigt. Wir leiten alle Zugriffe, die auf die alte Domain erfolgen, auf die neue um

Wir wollen sicherstellen, dass alle Nutzer, die auf die alte Domain zugreifen, unsere WordPress Installation auf der neuen Domain aufrufen können. Das erreichen wir, indem wir in der Konfiguration des Webservers (hier bei nginx) alle Anfragen umleiten.
/etc/nginx/sites-enabled/meine-alte-website.conf

server {
  server_name old_domainname;
  return 301 https://new_domainname$request_uri;
}

Wer das gleich auf DNS-Ebene erledigen möchte, kann für die alte Domain eine Weiterleitung auf die neue Domain einrichten

Alternativ kann eine “Umleitung” also auch direkt beim Domain Name Provider, z.B. domaisy.de, in dessen Name Server Konfiguration erledigt werden. Dort ist dann der entsprechende NS Eintrag für die neue Domain in der Zonendatei des DNS zu setzen. Das handhabt jeder Provider in seiner Benutzer-Oberfläche anders. Die Funktion ist aber in der Regel ersichtlich.

Das DNS nutzt dazu entweder CNAMEs, forwarders, oder NS redirections. Hier ein Beispiel Eintrag mit einem CNAME (cannonical name) record in der Zonendatei zu diesem Zweck:

; zone file
example.com IN CNAME some-other-host.example.com.

Damit ist unser WordPress unter der alten Domain weiterhin erreichbar, nutzt aber den URL mit dem neuen Domain Namen.

Wenn die WordPress Installation auf einen anderen Webserver soll

So wie oben beschrieben, funktioniert der WordPress Umzug auf eine andere Domain, wenn diese auf dem gleichen Server bleibt. Der gänzliche Umzug auf einen anderen Server geht allerdings fast identisch vonstatten. Der einzige Unterschied besteht darin, dass wir den Host dort anlegen und die WordPress-Installation (directory und database) dorthin übertragen.

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Sie können diese HTML -Tags und -Attribute verwenden:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>