In 7 stappen al je WordPress sites onder één WordPress 3 installatie -met eigen URLs

HerkoDuring the meanwhile 14 Comments

Update jan 2019 Let op: dit is een van mijn meest populaire artikelen, maar dit artikel is uit 2010. Inmiddels is er veel gebeurd in de WordPress wereld. Veel van de stappen zijn nog gelijk, maar ik heb dit artikel niet bijgewerkt met WordPress 5, bijvoorbeeld.

WordPress, het populaire open source weblog-beheer systeem, heeft versie 3, codenaam ‘Thelonius’ vrijgegeven. Een van de vernieuwingen is de mogelijkheid om vanuit één WordPress installatie meerdere WordPress weblogs op te zetten en te beheren: multi-site. Aangezien ik zelf meerdere websites heb die op WordPress draaien, waarvan ik zelf het technische beheer doe, is het een welkome verbetering. Vanaf nu kan ik al die installaties vanuit één centraal punt beheren.

Multi-site is voor gevorderden

Het gebruiken van de multi-site mogelijkheden zijn echter niet voor beginners. Je hebt wat kennis en ervaring met FTP, PHP, DNS en in sommige gevallen zelfs de commandline nodig. De documentatie op de WordPress website gaan er vanuit dat de gebruiker hiervan op de hoogte is. Helaas is dat niet altijd zo. Daarom heb ik geprobeerd een uitgebreide handleiding te schrijven voor het migreren van al je WordPress websites onder één WordPress 3 installatie.

Multi-site voor dummies

Je moet eerst begrijpen hoe WordPress multi-site werkt. En daarvoor moet je weten dat het web uit twee lagen bestaat: de bestandslaag en de adressen-laag.
De bestandslaag is de plek waar de bestanden van het WordPress systeem opgeslagen wordt, net als alle afbeeldingen, downloads etc. De bestanden staan ergens op een webserver, en zijn geordend in mappen en submappen. De bestandslaag bereik je via een FTP programma als FileZilla (PC) of Transmit (Mac). De WordPress bestanden staan vaak in de public_html/ map, welke de hoofdmap is voor de website.

De adressen-laag is waar de doorverwijzigen van het internet-adres naar de juiste mappen en bestanden geregeld worden. Zo wordt www.sitenaam.nl doorverwezen naar de juiste map op de juiste server, zodat de juiste bestanden weergegeven kunnen worden. De doorverwijzingen worden geregeld in het DNS, de Domain Name System.

Virtuele subsites

WordPress 3 gaat uit van 1 hoofdsite, waar alle andere websites ‘onder’ hangen. Die andere sites worden op 2 manieren aangemaakt, als submap (bijv. hoofdsite.nl/sitenaam) of als subdomein (bijv. sitenaam.hoofdsite.nl). Deze ‘subsites’ worden door WordPress beheerd. En dat is belangrijk om te weten, want deze subsites worden niet fysiek aangemaakt in de bestandslaag. ‘Normaal’ is het zo dat als je een subsite maakt (bijvoorbeeld sitenaam.hoofdsite.nl), de bestanden voor die subsite in een submap staan op de server (bijvoorbeeld public_html/sitenaam). In de adres-laag wordt er dan voor gezorgd dat het subdomein verwijst naar die submap. Met WordPress 3 is dat niet het geval. WordPress maakt ‘virtuele’ subdomeinen (en submappen) aan, en regelt zelf dat het adres naar de juiste site doorverwijst.

Aan de slag

Wat we gaan doen is drie WordPress websites migreren naar één hoofdwebsite, met twee subwebsites onder WordPress 3. Dat heet in WordPress termen een ‘netwerk opzetten’. Aan het eind van de rit heb je nog steeds drie verschillende websites, elk met een eigen internet adres (URL), maar kan je de thema’s, plugins, gebruikers en berichten centraal vanuit één website beheren.

Stap 0. Maak back-ups van alle WordPress sites

Dit is altijd belangrijk: als je grote wijzingen aan je websites gaat maken, begin dan eerst met het maken van een complete back-up van je website. Een complete backup is er een van de bestanden én van de database.

Een back-up maken kan op verschillende manieren. Als jouw webhoster cPanel gebruikt is het makkelijk: dan is het een kwestie van op de juiste knopjes klikken, en je hebt een ‘full site back-up’. MediaTemple (mt), waar ik mijn websites host, heeft dit niet. Ik heb via FTP een back-up gemaakt van alle bestanden door deze naar een map op mijn harde schijf te kopiëren. De back-up van de database is niets anders dan een export van de inhoud via PHPMyAdmin, het database-beheer progamma dat (mt) haar klanten biedt.

Stap 1. Exporteer je WordPress websites

Wat we gaan doen is de inhoud, vormgeving en functionaliteiten van de bestaande WordPress websites migreren naar de centrale WordPress 3 website. Daarvoor moet je de inhoud van de bestaande WordPress website exporteren, en later in de nieuw aangemaakt subsite in WordPress 3 importeren.

Het exporteren van de inhoud van een WordPress site is makkelijk: ga naar het beheerscherm van je WordPress site (sitenaam.nl/wp-admin) en ga naar Tools > Export. Zorg ervoor dat je alle berichten en pagina’s exporteert. Er wordt dan een .xml bestand op je computer opgeslagen.

In sommige gevallen is het slim om eerst alle plugins te deactiveren voordat je een export van de inhoud maakt. Doe dit als (straks bij het importeren van de inhoud) blijkt dat je niet alle berichten en pagina’s in het export bestand zijn opgeslagen.

Stap 2. Hoofdwebsite kiezen en voorbereiden

Als eerste moet je weten wat de hoofdwebsite wordt waar alle subwebsites aan komen te hangen. Vanuit deze hoofdwebsite wordt het netwerk gemaakt. Alle modules, thema’s e.d. Die je aan alle subwebsites wilt aanbieden, worden via de hoofdwebsite beschikbaar gesteld. Als er een nieuwe versie van een module of van WordPress zelf uitkomt, werkt je de hoofdwebsite bij, en zijn de updates voor alle andere websites verwerkt.

Als je hoofdwebsite een reeds bestaande website is, werk deze website dan bij naar WordPress 3. Daarmee is het in ieder geval klaar om als hoofdsite gebruikt te worden.

Let op: deze hoofdwebsite mag niet in een submap op de server staan, maar moet in de hoofdmap (root folder) op de server staan -waarschijnlijk genaamd html/ of public_html/.

Stap 3. Maak een wildcard subdomein aan

Hier wordt het technisch, en kan het vervelend worden. Een wildcard is een ‘joker’, en geeft aan dat voor het hoofddomein subdomeinen met alle namen mogelijk gemaakt worden. Dat ziet er zo uit: *.hoofddomein.nl. Dan kan WordPress 3 ervoor zorgen dat sitenaam1.hoofddomein.nl ook daadwerkelijk werkt.

Hoe maak je wildcard subdomeinen aan? Dat is iets wat je met je hosting-provider regelt. Als deze je de mogelijkheid geeft om je eigen DNS-records (zeg maar jouw kaart in het grote adresboek van het internet) aan te passen, kan je het zelf doen. Ga dan naar je cPanel of DNS-beheerpagina en maak een A-record aan met de waarde *.jouwdomeinnaam.nl (vervang jouwdomeinnaam.nl met jouw eigen hoofddomeinnaam, uiteraard).

Kan je niet zelf de DNS aanpassen, of vertrouw je je eigen kennis en ervaring hiermee niet, vraag dan aan je hosting provider of zij een wildcard subdomein voor jouw hoofddomein aan willen maken.

Soms is het niet nodig, omdat deze al standaard is aangemaakt. Zo ook bij (mt). Dan kan je deze stap overslaan.

Stap 4. Multi-site mogelijkheden activeren

De multi-site mogelijkheden van WordPress 3 staan niet standaard aan. Deze moet je activeren. Dit was lastig, omdat je een aantal bestanden moest bewerken en weer op de server moest terugzetten. Maar Jason Grim heeft een plugin geschreven die die acties automagisch uitvoert, de Enable Multi-Site plugin. Deze installeer je via je Plugins > Add new, zoek naar Enable Multi-Site, en klik op de ‘Install’ link. Activeer de plugin en volg de instructies voor het activeren van de multi-site mogelijkheden.

[update] WordPress heeft het sinds versie 3.1 makkelijker gemaakt om de multi-site functies aan te zetten. Hiervoor moet je wel wp-config.php bewerken met een tekst-editor:

Open  wp-config.php en voeg deze regel toe boven de tekst  /* That's all, stop editing! Happy blogging. */.

/* Multisite */
define('WP_ALLOW_MULTISITE', true);

Hiermee is de mogelijkheid om meerdere websites in dezelfde WordPress installatie geactiveerd. WordPress maakt een ‘netwerk’ aan. Dat netwerk is de paraplu waar alle sub-websites onder komen te vallen. Alle WordPress websites die je aan je netwerk toevoegt, worden beheerd via de hoofdwebsite. Als je aan de hoofdwebsite een nieuwe plugin of thema toevoegt, kan je dat aan alle websites in het netwerk beschikbaar maken.
Zo heb je nu een Super Admin menu er bij gekregen, waarmee je je netwerk kunt beheren. Zo kan je gebruikers aanmaken, plugins en thema’s toevoegen en beschikbaar maken, en websites aan het netwerk toevoegen.

Omdat we in Stap 3 ervoor gekozen hebben om subdomeinen te gebruiken voor het netwerk van WordPress 3 websites, worden alle nieuwe websites in het netwerk aangemaakt als subdomeinen. Bijvoorbeeld: je maakt een nieuwe website aan getiteld ‘test’. Dan zorgt WordPress ervoor dat test.hoofddomein.nl verwijst naar die website. WordPress maakt dan automagisch een ‘kale’ nieuwe website aan op dat adres.

Nu is je WordPress website klaar voor de Multi-Site mogelijkheden. Deze gaan we nu natuurlijk direct benutten. We gaan een test website in het netwerk aanmaken.

Stap 5. Test website in het netwerk aanmaken

Een nieuwe website maak je aan via Administratie > Extra > Netwerk. Je hoeft maar 3 velden in te vullen: de naam van het subdomein, de naam van de website en het e-mail adres van de beheerder.

We maken nu een testwebsite aan, om te kijken of alles werkt zoals het hoort. Dus gebruik ‘test’ (zonder ‘ uiteraard) als subdomeinnaam, ‘Test website’ als website titel, en jouw eigen e-mail adres als beheerder e-mail. Klik op de ‘Add site’ knop. Nu kan je naar test.jouwdomeinnaam.nl (vervang jouwdomeinnaam.nl met het hoofddomein van jouw eigen website) om te kijken of je nieuwe website is aangemaakt!

Stap 6. Elk subdomein een eigen, uniek internetadres geven

Als je zoals ik bent en meerdere websites met een eigen adres hebt, kan ik me voorstellen dat je de subdomeinen niet wilt gebruiken, maar elke website een eigen adres wilt kunnen geven. Dat kan -als je de domeinnamen bezit uiteraard.

Dat kan, met behulp van de ‘WordPress MU Domain Mapping’ plugin.

LET OP: deze plugin moet je niet direct gaan installeren via de Plugins > Add new methode, want dan gaat het fout! Lees zelf de README instructies goed door voordat je hiermee aan de slag gaat!

Download de plugin naar je hardeschijf, en pak het ZIP bestand uit. Er zitten een paar bestanden in, die je naar verschillende plekken op de server moet verplaatsen. Hiervoor gebruik je een FTP programma. Als je niet weet hoe dat werkt, raadpleeg dan het internet, daar is zeer veel informatie over te vinden. FileZilla is een uitstekend FTP programma voor de PC, en ikzelf ben een groot fan van Transmit voor de Mac.

Het sunrise.php bestand moet naar de wp-content/. map. De installatie-instructies geeft aan dat als er al een sunrise.php bestand aanwezig is, je ze zo goed en kwaad als het gaat moet samenvoegen. Dat betekent dat je de code in moet duiken door met een code-bewerkingsprogramma te kijken welke code aan het sunrise.php bestand op de server toegevoegd moet worden. Maar als je het sunrise.php bestand al hebt, heb je al ervaring met multi-site.

Dan moet je in de wp-content/ map een nieuwe submap aanmaken: mu-plugins/. In die map plaats je het domain-mapping.php bestand.

Tenslotte moet je een kleine aanpassing maken aan het wp-config.php bestand. Dat bestand staat in de hoofdmap (waarin ook de wp-content/ map staat). Download dat bestand naar je hardeschijf, en open het in een tekstbewerker (liefst kladblok of iets dergelijks -gebruik geen MS Word!).
Net boven de regel waar staat

/* That's all, stop editing! Happy blogging. */

voeg je de volgende regel toe:

define( 'SUNRISE', 'on' );

Als die regel er al staat, maar dan met // ervoor, haal dan de // weg en sla het bestand op. Plaats het bijgewerkte bestand vervolgens weer in de hoofdmap, waarbij je het origineel overschrijft.

TIP: Als je dit niet vertrouwt, hernoem dan het origineel eerst naar wp-config.orig alvorens je het bijgewerkte bestand op de server plaatst. Mocht er iets fout gegaan zijn, kan je altijd weer het wp-config.php bestand verwijderen en wp-config.orig hernoemen naar wp-config.php en zo de wijzigingen ongedaan maken!

Nu moet je de plugin activeren via het Plugins menu. En de plugin zo instellen dat het weet waar naartoe het de domeinen moet verwijzen. Immers, het gaat ervoor zorgen dat www.testdomeinnaam.nl de website die we op test.hoofddomein.nl hebben aangemaakt (in het WordPress netwerk) gaat laten zien. Op die manier kan je voor elke website die je aanmaakt in het netwerk, een uniek adres gebruiken.

Ga naar Super Admin > Domain Mapping. De instellingen van de plugin zien er erg technisch uit -en dat zijn ze ook. Echter, het belangrijkste veld is het IP adres of CNAME-hoofddomein veld. Ikzelf heb het IP-adres van de server waarop de hoofdwebsite staat gebruikt. Deze is bekend via het controlepaneel dat ik via de webhosting provider heb gekregen -daar kan je het ook navragen als je het niet weet.

Een andere manier is via een website [http://whatismyipaddress.com/hostname-ip], vul hier jouw hoofddomeinnaam in, en het IP adres van de server wordt zo bekend.

Nu is WordPress er klaar voor om domeinnamen naar de juiste website door te verwijzen.

Nu moeten we nog de domeinnamen zo instellen dat zij verwijzen naar de hoofdwebsite, zodat WordPress ze kan gaan dooverwijzen.

De makkelijkste manier is de domeinen om te zetten naar ‘geparkeerde’ domeinen. Vraag je webhosting provider en/of je domeinbeheerder (vaak zijn dit dezelfde partij, maar dat hoeft niet per sé) hoe zij dat verzorgen. (mt) biedt geen geparkeerde domeinen, maar biedt wel een oplossing. Misschien werken andere hosting providers ook wel op deze manier.

MediaTemple maakt voor elke (sub) domein in het systeem een aparte map aan op de server. Met behulp van een SSH verbinding vervang je de map met een zogenaamde symlink -een soort snelkoppeling. Voor de instructies van (mt) verwijs ik naar hun FAQ pagina. Let op: bij het maken van de symlinks verwijs je naar de hoofdmap. Dat is voldoende om ervoor te zorgen dat WordPress de verdere doorverwijzing kan regelen.

De test of het werkt is de test website die we in de vorige stap hebben aangemaakt. Parkeer of verwijs het unieke domein voor de testsite naar de hoofdsite. Ga naar Super Admin > Sites en schrijf het ID op van de site waar naartoe je het domein wilt laten verwijzen. Vervolgens ga je naar Super Admin > Domains, en geeft je bij Site ID het nummer van de website in het netwerk op, en bij Domain vul je de domeinnaam die je voor die site wilt gaan gebruiken in. Vink ‘Primary’ aan, en klip op ‘Save’.

Als het goed is, verwijst nu testdomein.nl naar test.hoofddomein.nl, zonder dat de bezoeker dat merkt.

Stap 7: Bouw je netwerk met websites

Nu kan je al deze websites beheren via de Super Admin op de hoofdwebsite, en toch elke website in het netwerk een eigen uniek adres geven. Je kan snel bestaande WordPress websites overzetten naar het netwerk door de inhoud te exporteren (via Tools > Export), en de inhoud vervolgens in de nieuw aangemaakt netwerk sites te importeren (via Tools > Import). Maak de nodige aanpassingen aan het domein (parkeren of symlink), en je hebt al je websites onder één installatie!

Veel plezier!

Comments 14

  1. Hoi,

    Ik heb onder deze site nu 2 subwebsites hangen (WP3.1) , die ik graag een eigen URL wil geven. Ik krijg het met deze opsomming niet helemaal voor elkaar.

    Ik krijg de domainmapping te zien en daar koppel ik het ipadres aan.
    Ik krijg in superadmin ook de optie domains, maar ondanks dat ik meerdere domeinnamen heb, herkent de plugin alleen maar het hoofddomein. Klopt dat of zou ik daar ook alle domeinnamen moeten kunnen toevoegen?

    Bedankt,
    Theo

  2. Post
    Author

    Het toevoegen van andere domeinnamen kan op meerdere manieren. Maar de logica is dat elk ander domein verwijst naar het hoofddomein. WordPress zorgt er dan zelf voor dat dat andere domein juist weergegeven wordt. Dus het klopt dat de superadmin alleen de hoofddomein kent. Door de andere domeinen te parkeren en te laten verwijzen naar het hoofddomein, geeft je eigenlijk WordPress het beheer over die domeinen.

  3. Ik zie dat deze uitleg zo’n twee jaar oud is. Als ik dat nu wil proberen werkt het dan nog steeds op deze manier?

    1. Post
      Author

      Het is vast makkelijker geworden -sommige stappen doen plugins al voor je. Ik ga het eens uitzoeken!

  4. Hoi Herko,
    Een mooi duidelijk artikel. Bedankt daarvoor! Hopelijk wil/kan je de volgende vraag beantwoorden. Ik beheer nu ongeveer 8 websites. Hiervoor heb ik 8 hostingpakketten bij een provider. Iedere website uiteraard met een eigen SQL database. Als ik deze 8 sites nu onder breng in een multisite omgeving door de data te exporteren en vervolgens te importeren in een NU netwerk, komen dan alle websites in één database te staan waardoor de huidige databases overbodig worden? Alvast bedankt voor je aandacht!

    1. Post
      Author
  5. ik heb een bestaande wp site en nu ga ik een andere maken, maar daarop wil ik de inhoud van een pagina van de bestaande site showen, een events pagina. Is dat mogelijk met wordpress multisite?

    1. Post
      Author
    1. Post
      Author
  6. Hallo Herko,

    Ik heb wordpress multisite geïnstaleerd en de stappen gevolgd maar het volgende probleem doet zich voor:
    De hoofdsite doet het wel maar als ik dan naar 1 van de subsites ga dan linkt deze als nog naar de hoofdsite en dit is niet alleen naar de site gaan maar ook bij het gaan naar de dashboard. Enig idee hoe ik dit kan oplossen?

  7. Ik heb tot stap 5 gevolgd, en krijg inderdaad een menuitem netwerk beheren.Op de onderliggende pagina staat alleen de volgende tekst:

    Maak een netwerk met WordPress websites

    Welkom bij het Netwerkinstallatieproces!

    Vul de gegevens hieronder in en je bent op weg om een netwerk van WordPress sites te maken. We maken de configuratie bestanden in de volgende stap.

  8. Dag Herko,

    Ook ik heb drie sites actief in de lucht onder één WordPress beheer met Multisite, maar er is een probleem. Als ik “www.vtmt.nl” in mijn browser typ (dat is één van mijn sites) kom ik precies waar ik wezen wil, maar als ik zónder www typ, dus “vtmt.nl” dan kom ik op de hoofdpagina van mijn WordPress beheer. Ik krijg het niet voor elkaar om “vtmt.nl” en “www.vtmt.nl” naar hetzelfde adres te sturen. Volgens mijn webhost moet dat in WordPress kunnen, maar uitleg kunnen zij niet geven. Weet jij waar ik dat in WordPress wel kan aanpassen? En moet dat per sub-site of centraal?

    Michel

Leave a Reply

Your email address will not be published. Required fields are marked *