Hoe een WordPress multisite installatie verhuizen?
Hoe een WordPress multisite installatie verhuizen?

Iedereen die met WordPress werkt komt zo nu en dan bij de uitdaging om een WordPress website te migreren (verhuizen). Dit kan zijn naar een andere domein of naar een andere subfolder op je domein. Recentelijk heb ik deze actie uitgevoerd voor: www.protestantshuizen.nl. Dit betrof in dit geval een WordPress Multisite installatie in een /wp/ subfolder. Deze hebben we met behulp van onderstaande stappenplan gemigreerd vanuit de subfolder naar de root.

Hoe WordPress multisite van subfolder naar root migreren?

Op de WordPress codex is de omschrijving voor de MultiSite verhuizing redelijk cryptisch, echter is dat niet noodzakelijk. De volgende stappen moeten worden uitgevoerd om een migratie van subfolder naar root uit te voeren.

Stap 1. Backup maken van alle bestanden in je /www/ of /htdocs/  directory bij je hosting provider;

Stap 2. Backup maken van alle tabellen in je database waarvan WordPress gebruik maakt;

[box type=”note”]Optionele stap: Exporteren van je WordPress installatie met de exporteren functionaliteit. Let op dat je hiervoor wel de xxxx plugin nodig hebt.[/box]

[box type=”note”]Optionele stap: De volledige database kopiëren naar een tijdelijke tabel, zodat bij fouten je eenvoudig terug kan door wijzigingen van databasenaam (+ gebruikersnaam) in je wp-config.php[/box]

WordPress NetwerkbeheerStap 3. Aanpassen van de informatie in je netwerkbeheer met betrekking tot de websites.

  1. Ga naar ‘netwerkbeheer’ van je Multisite installatie;
  2. Ga naar ‘Sites’ –> ‘Alle sites’ en bewerk de diverse sites door de ‘pad’ te wijzingen door de subfoldernaam te verwijderen.
    Let op: Het vinkje ‘werk site_url en home bij’ moet aanstaan.
  1. Ga vervolgens per site naar het ‘Instellingen’ tabblad en verwijder daar alle subfolder verwijzingen.

Stap 4. Verifieer (en wijzig) de instellingen in de database voor de tabellen wp_ID_options,  wp_site, wp_blogs.

Voor de options tabel kan je eenvoudig de volgende SQL gebruiken om te verifiëren of de oude URL nog actief is:

SELECT * FROM wp_ID_options WHERE option_value LIKE '%oude_URL%'

Aangezien de primaire website niet via netwerkbeheer te wijzigingen is, is het noodzakelijk om ook hier de wijzigingen in door te voeren.

[box type=”info”]Let op: Voer de wijzigingen uit voor elk ‘ID’ van de websites in de multisite installatie.[/box]

Stap 5. Kopieer de inhoud van de subfolder naar de root folder.

Stap 6. Update de database voor de diverse wp_ID_posts tabellen met behulp van het volgende SQL script via phpmyadmin:

UPDATE wp_ID_posts SET post_content = REPLACE(post_content,'domeinnaam.nl/subfolder','domeinnaam.nl');

UPDATE wp_ID_posts SET guid = REPLACE(guid,'domeinnaam.nl/subfolder','domeinnaam.nl');

[box type=”info”]Let op: Naast de diverse ID (1, 2, 3, etc) is de wp_posts tabel ook gewoon aanwezig waarin bovenstaande UPDATE statement in uitgevoerd kan worden.[/box]
Stap 7. Wijzig de wp-config.php en .htaccess bestanden in de root folder zodat de subfolder verwijzing wordt verwijdert.

Stap 8. Hernoem de subfolder naar een onbekende naam.

Stap 9. Controleer de aanpassingen en de gemigreerde website op werking.

Met bovenstaande stappen is de gehele migratie uitgevoerd en kan de website weer benaderd worden, overigens is het wel verstandig om de zoekmachines bekend te maken van de wijzigingen door je sitemap.xml opnieuw te laten crawlen.

Verder kan het noodzakelijk zijn om de nodige redirect in de .htaccess aan te maken zodat oude verwijzingen naar de /subfolder/  nu correct worden afgevangen.

Wanneer alles verder zonder enige problemen draait kan je ter zijner tijd de (hernoemde) subfolder daadwerkelijk verwijderen.

FAQ: Antwoorden voor mogelijke foutmeldingen

FOUT: Geen verbinding mogelijk met de database

Deze fout wordt hoogstwaarschijnlijk veroorzaakt doordat je de informatie in de tabel wp_blogs niet correct hebt doorgevoerd. Controleer en valideer deze aanpassingen en probeer het nogmaals.

Verwijzingen vanuit de menu tussen de diverse subsites is nog foutief

Dit klopt. In bovenstaande stappenplan wordt geen rekening gehouden met wijzigingen van de menu’s en bijbehorende verwijzingen. Hiervoor moet je handmatig een aanpassing doen in de menu’s of de tabel postmeta wijzigen waarin de menu’s worden opgeslagen.

Het is misgegaan, hoe draai ik het terug?

Hiervoor heb je in principe de verschillende backups uitgevoerd. Wanneer je je hebt gehouden aan bovenstaand stappenplan adviseer ik de volgende rollback acties:

  1. Alle gekopieerde informatie in de /www/ of /htdocs/ met uitzondering van je subfolder verwijderen;
  2. Vervolgens kan je kiezen in de volgende twee activeiten:
    1. Database backup opnieuw importeren met phpmyadmin in de database;
    2. wp-config.php aanpassen en de database laten verwijzen naar de tijdelijke database;
  3. overige informatie in de root zoals je .htaccess en index.php (welke redirect deden naar subfolder) terugzetten.

Overige mogelijkheden

Naast de hierboven beschreven oplossing, zijn er ook andere mogelijkheden voor een verhuizing van WordPress Multisite. Denk hierbij aan:

  • Export database en met een tekst editor een find/replace doen om alle oude domeinnamen/subfolder te vervangen door de nieuwe naam;
  • Gebruik maken van een plugin zoals: WordPress Move;
  • Het script van Interconnectit gebruiken zoals deze op Github staat;

Bovenstaande stappen waren echter afdoende en hierbij was er voldoende controle aanwezig om de stappen te evalueren en waar nodig een rollback uit te voeren van de migratie.

Verwijzingen

Als naslag is er veel informatie beschikbaar rondom het wijzigen van URL’s of informatie over multisite. Hieronder een tweetal verwijzingen die in de rest van het artikel nog niet voorkwamen:

WordPress Multisite migratie van subfolder naar root

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *