Auch mal wieder ein Tutorial, das ich gerade erst selbst angewendet habe!

Übersicht:

  • WP und Datenbank sichern
  • DNS anpassen / einrichten
  • Apache VHost / NGINX Server anpassen
  • URLs in der Datenbank aktualisieren
  • MySQL einrichten
  • Alte Domain zu Neuer weiterleiten (INKLUSIVE PATH FORWARDING!)

0. WP vorbereiten

Muss man nicht unbedingt machen, ist aber ratsam: die Permalink Struktur temporär auf Default Setzen ([Domain]/?p=[Zahl]) und alle Plugins deaktivieren. Kann Probleme verhindern.

1. WP und Datenbank sichern

apt-get update && apt-get upgrade && apt-get install zip unzip nano

zip -r [ein Dateiname].zip [Pfad zum WP Ordner]

mysqldump -u root -p[Passwort des MySQL Root Nutzers] [Name der WP Datenbank] > [ein Dateiname].sql

2. DNS anpassen / einrichten

Nun – falls noch nicht geschehen, die A/AAA Records für die neue Domain setzen. Hatte die alte Domain Subdomains, diese natürlich auch setzen, oder eine Subdomain Wildcard (*.[Domain].[TLD]) setzen.

3. Apache VHost / NGINX Server anpassen

Apache

cd /etc/apache2/sites-available

cp [Name der VHost Datei der alten Domain] [Name für neue Datei]

nano [Name der neuen Datei]

NGINX

cd /etc/nginx/sites-enabled

cp [Name der Server Datei der alten Domain] [Name für neue Datei]

nano [Name der neuen Datei]

Nun hier den / die Servername/s an die neue Domain anpassen (in apache „ServerName“, in NGINX „server_name“)

Apache

a2ensite [Name der neuen Datei]

service apache2 reload

NGINX

service nginx restart

(Falls man die neue Datei direkt im /sites-enabled Verzeichnis erstellt hat. Ansonsten natürlich erst noch einen symbolischen Link anlegen.)

4. URLs in der Datenbank aktualisieren

cd [Pfad zum Verzeichnis, wo man die Befehle von 1. ausgeführt hat]

cp [Name der .sql Datei] [neuer Dateiname].sql

Den Inhalt des folgenden Spoiler kopieren und ANPASSEN!! [ALTE-DOMAIN] durch die alte Domain, wie sie unter Einstellungen > Allgemein in WP steht ersetzen, und [NEUE-DOMAIN] durch die neue. Wer das alte, bevorzugte Muster (mit oder ohne www) behalten möchte, gibt einfach bei alt und neu die Domain ohne www ein. Möchte man aus mit www, ohne www machen, bei alte D. die D. MIT www und bei neue OHNE. Möchte man aus ohne www, mit machen, einfach anders herum.

Im Folgenden gehe ich davon aus, dass der folgende Befehl ausgeführt wird, während man sich in dem Ordner der den Dump enthält befindet.

sed -i 's/[ALTE-DOMAIN]/[NEUE-DOMAIN]/g' [NAME DER SQL DATEI MIT ENDUNG]

An der .sql Datei hat sich quasi nichts geändert von außen, von innen aber schon.

5. MySQL einrichten

Nun die neue, „gepatchte“ Datei in die Datenbank einlesen. Nicht den Namen der Datenbank für die alte Domain verwenden! Will man das tun, diese vorher erst per

drop database [Name der Datenbank];

im MSQL Prompt löschen. Vorher dann sicherstellen, dass wirklich ein Backup vorhanden ist, das aktuell ist und die Datei gültig aussieht (kann einfach in z.B. nano geöffnet werden)!

mysql -u root -p[MySQL Root Nutzer Passwort]

create database [Name für neue Datenbank];

{Optional} create user [Name für neuen Nutzer]@localhost identified by ‚[Passwort für neuen Nutzer]‘;

grant all privileges on [Name der neuen Datenbank].* to [Name des (neuen) MySQL Nutzers];

flush privileges;

exit

mysql -u [Name des MSQL Nutzers] -p[dessen Passwort] [Name der neuen Datenbank] < new.sql

 6. Alte Domain zu Neuer weiterleiten

Hierfür den VHost / die Server Datei anpassen, sodass die alte Domain in ein anderes Verzeichnis zeigt (z.B. /var/www/BlogWeiterleitung). Bei nginx nicht vergessen, dass sich php5-fpm um .php Dateien kümmern soll und dass das in die Config geschrieben werden muss (Beispiel Zeilen im folgenden Spoiler).

Spoiler

location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}

[collapse]

Nun das festgelegte Verzeichnis erstellen, folgendes ausführen:

nano index.php

Und folgendes einfügen:

Spoiler

<?php
$path = $_SERVER[„REQUEST_URI“];
header(„HTTP/1.1 301 Moved Permanently“);
header(„Location: https://[NEUE-DOMAIN]“ . $path);
?>

[collapse]

Selbstverständlich will [NEUE-DOMAIN] durch die neue Domain (mit oder ohne www, wie man mag) ersetzt werden.

Anschließend führen Apache Nutzer noch folgendes aus:

nano .htaccess

Und schreiben folgendes in die htaccess:

ErrorDocument 404 /index.php

Anschließend Apache per

service apache2 reload

neu einlesen lassen. Und was macht die php und die htaccess nun?

Die PHP holt sich den Pfad, auf den zugegriffen werden wollte aus der URL und leitet den Nutzer zur neuen Domain und dem Pfad hintendran weiter. Die htaccess sorgt dafür, dass diese Weiterleitung immer erfolgt (wenn das Verzeichnis abgesehen von der index.php und .htaccess leer ist versteht sich) – egal, wie der Pfad lautet.

NGINX Nutzer nutzen die index.php natürlich auch, aber statt etwas in eine .htaccess zu schreiben gibts hier folgendes:

nano nginx.conf

Und folgendes in die Datei schreiben:

error_page 404 /index.php;

 

Das wars auch schon!

Schon sollte der Blog unter der neuen Domain erreichbar sein, alle URLs mit der neuen Domain anfangen und Besuche auf die alte Domain auf die Neue umgeleitet werden – inklusive dem Pfad.

[HowTo] WordPress Blog auf andere Domain verschieben
Markiert in:                                                                                                                                                                                             

Schreibe einen Kommentar

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