Een tijd geleden heb ik een vriend van mij op weg geholpen met zijn eerste stappen in de WordPress wereld en hij was hier gelijk erg enthousiast over. Deze persoon had al een aantal domeinen in gebruik en hij vroeg mij hoe hij dit het beste kon aanpakken. Ik heb hem geadviseerd om tijdelijk een aparte domein aan te schaffen en hierop een WordPress Mult-Site configuratie te zetten die gebruik maakt van sub-folders. Hij kon dan op zijn gemak de sites ‘aankleden’ en als het moment dan daar was dan konden we deze Mult-Site configuratie omzetten van sub-folder naar sub-domein.

Ik heb in het verleden al eens uitgelegd hoe je een WordPress Multi-Site met sub-folder opzet. Hier zijn we toen mee aan de slag gegaan en hebben 3 sites gemaakt. Nu was het moment daar om de WordPress Multi-Site sub-folder om te zetten in een WordPress Multi-Site sub-domein. Voor deze taak bestaan ook plugins, maar voor het Multi-Site gedeelte moet je vaak de premium versie van zo’n plugin aanschaffen en deze zijn schrikbarend duur (meer dan Euro 100,=). Dat moest ik toch ook zelf kunnen dacht ik en daarom heb ik dit verder uitgezocht. Hieronder leg ik uit hoe ik dit voor elkaar heb gekregen.

In de huidige situatie had ik nu 1 WordPress Multi-Site sub-folder configuratie met de volgende structuur:

renepetra.nl              <= site sky-pirates.nl (hoofd)
renepetra.nl/taikobreda   <= site taikobreda.nl
renepetra.nl/vliegerdagen <= site rijsbergsevliegerdagen.nl

Deze benaderde je dus in een Multi-Site sub-folder met de URL in de eerste kolom hierboven. Dit was dan ook onze test-omgeving. Dit moesten we nu gaan omzetten zodat je de ‘echte’ URL kon gebruiken. Oftewel we moesten de test-omgeving omzetten van Multi-Site sub-folder naar Multi-Site sub-domein.

Om dit voor elkaar te krijgen voer je de volgende punten uit:

  1. Verhuizen van de ‘echte’ domein-namen naar jouw host-provider (als deze hier nog niet stonden)
  2. Zorg ervoor dat je test-omgeving de ‘Search & Replace’ plugin bevat
  3. Maak Backup van je test-omgeving
  4. Copieer je test-omgeving naar de hoofd-site
  5. Aanpassen ‘wp-config.php’ en ‘.htacccess’ van je hoofd-site
  6. Aanpassen alle URL’s (in de database) van je sites m.b.v. ‘Search & Replace’ plugin
  7. Opzetten van Domain Pointers voor je sub-domeinen
  8. Instellen Let’s Encrypt voor al je domeinen

Hieronder leg ik een aantal stappen van hierboven in meer detail uit.

Backup van je test-omgeving

Ik kan niet genoeg benadrukken hoe belangrijk het is dat je regelmatig backups maakt. In DirectAdmin, die je bij de meest host providers zult vinden, is dat heel eenvoudig. Kies hier ‘Create/Restore Backups’




Zorg vervolgens dat alles aangevinkt staat en druk op de [Create Backup] knop.



Hierna zal op de achtergrond de backup gemaakt worden. In hetzelfde scherm kun je ook eenvoudig een backup terugzetten met de Restore operatie. Ik heb een backup gemaakt van de gehele omgeving en ook nog een aparte van alleen de database. Met FileZilla (FTP client) kun je de back-ups eenvoudig vinden als ‘*.gz.tar’ files.


Copiëren van de test-omgeving

We hebben nu een test-omgeving domein en 1 (!) domein dat we als hoofd-site gaan kiezen. In ons geval was dit ‘renepetra.nl’ (test-omgeving) en ‘sky-pirates.nl’ (hoofd-site). Met behulp van FileZilla (je kunt eventueel ook File Manager van DirectAdmin gebruiken) moet je nu alle files van de directory ‘/domains/renepetra.nl/public_html’ copiëren naar ‘/domains/sky-pirates.nl/public_html’. Dit doe je bij FileZilla met een tussen-stap met je PC (copieer dus renepetra.nl naar je PC en vervolgens van je PC naar sky-pirates.nl). In DirectAdmin (met File Manager) kun je de tussenstap eventueel overslaan door gebruik te maken van het clipboard.



Aanpassen ‘wp-config.php’ en ‘.htaccess’

Van de site ‘sky-pirates.nl’ gaan we nu de ‘.htaccess’ en ‘wp-config.php’ files aanpassen.

De inhoud van ‘.htaccess’ moet er als volgt uitzien:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
 
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
 
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
# END WordPress

php_value max_execution_time 180
php_value max_input_vars 3000
php_value memory_limit 256M

Verander ‘wp-config.php’ zodat het volgende erin staat:

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'sky-pirates.nl');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

define( 'ADMIN_COOKIE_PATH', '/');
define( 'COOKIE_DOMAIN', '');
define( 'COOKIEPATH', '');
define( 'SITECOOKIEPATH', '');

Aanpassen alle URL’s in database

Ga naar je WordPress dashboard van je hoofdsite en selecteer de ‘Search & Replace’ plugin (in Gereedschap). Kies in deze plugin nu de tweede tab (Search & Replace). We gaan nu alle URL’s in de database die eerst naar renepetra.nl wezen omzetten naar de ‘echte’ URL’s.




Ik heb hierbij achtereenvolgens de volgende zoek/vervang opdrachten uitgevoerd:

Zoek: renepetra.nl/vliegerdagen  Vervang: rijsbergsevliegerdagen.nl
Zoek: renepetra.nl/taikobreda    Vervang: taikobreda.nl
Zoek: renepetra.nl               Vervang: sky-pirates.nl

Vink hierbij alle database tabellen aan. Je kunt dit eerst met een zogenaamde ‘Dry Run’ uitvoeren. Als je resultaten zijn zoals je verwacht kun je daadwerkelijk de veranderingen in de database maken door de actie nogmaals uit te voeren zonder ‘Dry Run’. In dat geval kies je onderaan ‘Save changes to Database’.

Opzetten van Domain Pointers

Tenslotte moeten we de andere domeinen nog naar de hoofd-site laten wijzen. Onder water gaat dit met een zogenaamde symbolic link die aan de buitenkant ook wel Alias wordt genoemd. In DirectAdmin kun je dit instellen met een zogenaamde ‘Domain Pointer’. Deze optie kun je in de Advanced Features van DirectAdmin vinden.




Vervolgens voeg je hier je andere domeinen toe. Zorg ervoor dat de optie ‘Create as an Alias’ aan staat.



Het is nu verstandig om de cache van je internet browser leeg te gooien, want soms geven bovenstaande aanpassingen onverwachte resultaten vanwege je eerdere browse-sessies op je test-omgeving. In Firefox doe je dit met de optie ‘Cookies and Site Data’


Later nieuwe site toevoegen

In principe ben je nu klaar. Je hebt nu een WordPress Multi-Site sub-domein omgeving met ‘echte’ URL’s. Verder kun je het domein van je oude test-omgeving nu opzeggen. Ook kun je nu heel eenvoudig in de toekomst nieuwe domeinen toevoegen. Dit lijkt in eerste instantie alleen een sub-domein onder je hoofd-domein (sky-pirates.nl in ons geval) te zijn, maar geen nood. Naderhand kun je dit gewoon aanpassen in de ‘echte’ URL:



Instellen Let’s Encrypt voor al je domeinen

In DirectAdmin kun je ook eenvoudig een Let’s Encrypt certificaat instellen voor al je domeinen. Ga hiervoor naar de optie ‘SSl Certificates’ in de ‘Advanced Features’ van DirectAdmin.




Kies nu de optie ‘Free & automatic certificate from Let’s Encrypt’ en vink alle URL’s aan waarvoor je een gratis certificaat wilt.



Druk vervolgens op [Save]. Hierna worden je certificaten aangemaakt en heb je er geen omkijken meer naar.

Conclusie

Je ziet dus dat je zonder een dure premium Plugin aan te schaffen je toch zelf gratis en eenvoudig WordPress Multi-Site sub-folder kunt omzetten in Multi-Site sub-domein. Ik hoop dat deze informatie jou ook kan helpen.