Le fonctionnement multisite de WordPress est très pratique et simple mais je suis contrainte de scinder un multisite (heureusement encore peu fourni) car je transfère le site sur un VPS avec Plesk et il est pour l’instant impossible d’avoir plusieurs domaines distincts avec des certificats Let’s Encrypt distincts sur un seul hébergement Plesk…
Les spécificités du multisite
Si on veut sortir un site d’un multisite, il faut le « détricoter » :
Pour les fichiers, il faut remettre toutes les extensions du site principal dans le site devenu orphelin et il faut également lui transférer ses fichiers médias. C’est simple à faire.
Dans la base de données, c’est plus compliqué. Il y a des tables spécifiques au site à séparer mais certaines sont partagées entre tous les sites du multisite. C’est là que le détricotage est un peu fastidieux.
Trouver l’identifiant du site à sortir
Dans le tableau de bord du multisite, aller sur mes sites > Admin du Réseau > Sites.
Passer la souris sur le nom du site à déplacer (disons « subdomain.com »). Son url complète s’affiche en bas de la fenêtre, sous la forme https://domaine.comwp-admin/network/site-info.php?id=3. Ici l’identifiant est donc « 3 ». On en aura besoin pour la suite.
Sauvegarder le multisite
Sauvegarder les fichiers
Avec Filezilla : sauvegarder le répertoire /www/wp-content/uploads/sites/3 (3 est l’identifiant du site que l’on veut sortir).
Sauvegarder la base de données
Nota du 23/11/216 : pour des raisons que j’ignore, l’export via PHPMyAdmin provoque parfois une erreur : les index et auto-incrémentations ne sont pas transférés. Dans ce cas, il faut aller dans l’interface client de l’hébergement OVH original et demander une sauvegarde de la base de données (un dump) que l’on reçoit quelques minutes plus tard par mail. Cette sauvegarde s’importe ensuite sans souci dans la base Plesk.
Noter les informations du site
On a intérêt à bien noter (copies d’écran) les informations suivantes :
quel est le nom du thème (stargazer pour moi) et ses réglages ?
quelles sont les extensions utilisées et faisant l’objet d’un réglage spécifique ? Pour mon cas, Cookie Notice, Floating Social Bar
Dans l’installation de WordPress, copier /www/wp-content/uploads/sites/3 de l’ancien site vers /www/wp-content/uploads/ dans le nouveau. Je copie aussi les fichiers de tous les plugins et thèmes que je veux utiliser. C’est plus rapide qu’une installation par le tableau de bord.
Transférer les bons éléments de la base de données
Sauvegarder la base de donnée du site cible
Disons que son prefixe est ‘cible_ ‘.
Importer la base de données du multisite d’origine
En principe elle n’a pas les mêmes préfixes (‘source_’ ) et ne va pas supprimer les tables du site cible.
Supprimer les tables ‘source_’
Les seules qu’on conserve sont :
source_3_options ;
source_options ;
source_usermeta ;
source_users.
Supprimer les tables du site cible
On ne touche pas à cible_options, cible_usermeta et cible_users) et on supprime :
cible_comments
cible_links
cible_postmeta
cible_posts
cible_termmeta
cible_terms
cible_term_relationships
cible_term_taxonomy
Renommer les tables
source_comments en cible_comments
source_links en cible_links
source_postmeta en cible_postmeta
source_posts en cible_posts
source_termmeta en cible_termmeta
source_terms en cible_terms
source_term_relationships en cible_term_relationships
source_term_taxonomy en cible_term_taxonomy
Modifier à la main certaines entrées de cible_options
Il faut faire du sur mesure… Le site que je détricotais était heureusement très simple. J’ai simplement dû aller chercher dans la table source_3_options les valeurs des éléments qui nous semblent mériter d’être transféré et copier-coller la valeur dans l’option de même nom de la table cible_options .
Conserver une trace de certaines entrées
Certaines entrées n’existent pas encore puisqu’il faut activer le thème ou l’extension, puis faire une petite modification des réglages pour qu’elles se créent.
J’ai copié-collé dans un éditeur de texte les valeurs de current_theme, theme_mods_stargazer et cookie_notice_options pour les avoir plus tard.
Modifier les enregistrements DNS
Pointer le domaine subdomain.com vers le nouvel hébergement.
Avec whatsmydns.net, voir la propagation du nouveau DNS.
Créer le certificat Let’s encrypt de subdomain.com (en cochant l’option www).
Faire les derniers réglages
Pour une raison que j’ignore, Chrome conserve longtemps l’ancienne adresse IP du site. J’ai trouvé que c’était très irritant puis maintenant c’est très pratique !
Je tape subdomain.com dans firefox (réglé pour ne conserver aucun historique) et il affiche le nouveau site. Je peux me connecter à son tableau de bord.
Pendant ce temps, Chrome continue à afficher l’ancien site et si on se connecte, on se connecte à l’ancien tableau de bord. C’est pratique si on ne trouve pas les bonnes infos dans la base de données.
Modifier à la main les données
J’ai activé le thème stargazer puis fait une toute petite modification de son apparence. Ainsi, theme_mods_stargazer apparait maintenant dans cible_options. Je peux y copier-coller la valeur qui était dans la table du site source. Et automatiquement tous les réglages sont repris (sauf pour l’image de header, qu’il faut désactiver puis réactiver pour qu’elle s’affiche).
Dans les réglages de l’extension cookie-notice, j’ai également fait une toute petite modification. Dans la table cible_options, l’option cookie_notice_options est maintenant visible. Je peux aussi y copier-coller la valeur qui était dans la table source-options.
Pour le reste, j’ai copié-collé les réglages entre l’ancien site visible sur chrome et le nouveau visible sur firefox.
Rajouter les utilisateurs du site source
Il faut rajouter à la main les utilisateurs du site source. Comme on a conservé les tables source_3_usermeta et source_3_users, on peut assez facilement retrouver les bonnes informations.
Et malheureusement si l’id des users a changé, on risque d’être obligé d’aller réaffecter les contenus aux bons users…
Modifier wp-config.php et .htaccess
Vu que le site créé est crypté (certificat Let’s encrypt), il faut modifier certains éléments. Et je veux aussi interdire l’édition de fichiers dans le tableau de bord WordPress et limiter le nombre de révisions à 5.
Dans wp-config.php (avant la ligne /* That’s all, stop editing! Happy blogging. */ ), ajouter les lignes suivantes :
// Forcer l'accès SSL (https) pour le tableau de bord WordPress
define('FORCE_SSL_ADMIN', true);
// interdire l'édition de fichiers dans le tdb WordPress
define('DISALLOW_FILE_EDIT', TRUE);
define('WP_POST_REVISIONS', 5);
// max 5 stored revisions per posts
Et dans .htaccess, le contenu devrait être le suivant :
Une fois que la propagation des DNS est terminée (il vaut mieux attendre 24h), je peux supprimer le site dans son multisite source. Notre site est maintenant autonome.
Je souhaite transformer un site existant (https) en un site multisite WordPress. En principe, c’est exactement comme ce que j’ai fait avec le site de test dans le premier article de cette série. La seule différence, c’est que je ne peux pas me permettre d’erreur puisque le site est utilisé…
Je fais comme indiqué dans le premier article de cette série WordPress Multisite sur OVH mutualisé, avec en plus des sauvagardes et la gestion des extensions existantes.
Sauvegarder les éléments du site existant
En premier, faire une sauvegarde de la base de données du site et la conserver dans un endroit sûr.
Avec Filezilla ou équivalent, faire une copie des fichiers .htaccess (en .htaccessOLD) et wp-config.php (en wp-configOLD.php).
Dans le tableau de bord WordPress du site existant, aller dans le menu « extensions » puis choisir la vue « extensions activées ». Copier le tableau dans Word ou autre pour disposer d’une liste de toutes les extensions activées du site.
Transformer le site en site multisite WordPress
Ca fonctionne exactement comme dans l’article « Un site ‘multisite’ WordPress sur OVH mutualisé ».
(1) Dans wp-config.php , j’ajoute les deux lignes suivantes :
Dans le tableau de bord WordPress, (2) je désactive toutes les extensions puis je vais dans le menu « outils » > « création du réseau ». Là je ne peux que choisir « sous-domaines », je met mes coordonnées d’administrateur comme nom de super-administrateur et je sauvegarde.
(3) Je modifie wp-config.phppour que les lignes correspondant aux multisite soient maintenant (attention dans la ligne 6 surlignée, le nom du domaine doit être le bon) :
(4) Je modifie .htaccess qui contient maintenant (c’est un site en https) :
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
# direct everything to https
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [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]
</IfModule>
# END WordPress
(5) Je me reconnecte au tableau de bord WordPress du site.
Je sélectionne toutes les extensions qui doivent être réactivées puis (6), je les active pour les reseau.
Je vérifie et tout va bien. Du point de vue de l’internaute, le site est comme avant. Evidemment, du point de vue de l’administrateur devenu super-administrateur, il y a quelques changements.
Et maintenant ?
Il faut que je voies quelles sont les différences entre ‘super-administrateur’ et ‘administrateur’ pour voir quels sont les points de vigilance à prévoir. Ce sera l’objet d’un autre article de cette série WordPress Multisite sur OVH mutualisé.
Dans le premier article de cette série « WordPress Multisite sur OVH mutualisé« , nous avons vu comment créer un réseau de sites sur une seule installation de WordPress et une seule base de données. Jusqu’à présent, les sites du réseau ont tous une url sous la forme d’un sous-domaine du site principal (http(s)://prefix.domain-principal.com et le site principal est http(s)://domain-principal.com). Je veux qu’un des sites du réseau utilise un autre nom de domaine, et pas un sous-domaine du domaine principal.
Pour celà, l’usage est d’utiliser une extension de « domain mapping », telle que WordPress MU Domain Mapping. Dans ce billet, je vais parler de cette extension et d’une méthode encore plus simple.
Préparation du nom de domaine à associer
Le site WordPress multisite dans lequel je veux insérer un nouveau domaine est dans un répertoire intitulé « multi-test ». Le domaine que je veux y insérer est test1.parcours-performance.com
Sur l’espace client OVH, dans l’hébergement qui contient le multisite, cliquer sur l’onglet « multisites » puis sur le bouton « ajouter un domaine ou un sous-domaine ».
Là je n’aurais pas dû cocher « créer également … www… ». Je l’ai supprimé après pour ne pas multiplier les noms de domaine dans mon espace client…
Mon site WordPress multisite avant
J’ai déjà créé les sites test1.potentiel-web.com et test2.potentiel-web.com selon la méthodologie décrite dans l’article précédent de cette série WordPress Multisite sur OVH mutualisé. Je vais les laisser tels quels.
Je pars donc d’un réseau de sites contenant 3 sites :
le site principal (potentiel-web.com)
deux sites ayant pour nom un sous-domaine du site principal (test1.potentiel-web.com et test2.potentiel-web.com).
Je viens de créer un sous-domaine, test1.parcours-performance.com, dans mon espace client OVH et il est relié à l’hébergement du multisite.
J’ai maintenant deux options pour créer un site dans le réseau multisite :
Sans extension – c’est la solution que je recommande.
Avec une extension de « domain mapping »
On installe WordPress MU Domain Mapping de façon normale avec « admin du réseau » > « extensions » > « ajouter » puis on cliquer sur « activer sur le réseau ».
Avec Filezilla (ou autre client FTP), aller dans /multi-test/wp-content/plugins/wordpress-mu-domain-mapping et déplacer sunrise.php pour le mettre dans /multi-test/wp-content .
éditer wp-config.php et décommenter ou ajouter la ligne suivante, au dessus de dernier « require_once ».
/* for the multisite WordPress MU Domain Mapping extension */
define( 'SUNRISE', 'on' );
Réglages de l’extension
Dans « admin du réseau » > « Tableau de bord », on voit dans les menus à gauche « Réglages ». Cliquer sur son sous-menu « domain mapping ».
L’adresse IP se trouve à droite du nom de l’hébergement dans l’espace client OVH. Dans WordPress, « Réglages » > « Domains », on saisit cette adresse IP puis on définit les options du domaine.
Spontanément, je n’aurais coché que la case 2, comme dans la copie d’écran ci-dessus.
Mais après quelques essais, j’ai vu que je dois cocher la case 5, « Disable primary domain check. Sites will not redirect to one domain name. May cause duplicate content issues.« . En effet, si j’utilise des domaines externes (qui ne sont pas des sous-domaines du site principal), l’internaute voit le nom du site d’origine car la redirection est visible. Ainsi, après avoir « mappé » https://test1.parcours-performance.com à https://test2.potentiel-web.com (opération décrite plus loin), si je tape https://test1.parcours-performance.com dans un navigateur, le site s’ouvre mais l’url visible est devenue https://test2.potentiel-web.com…
Il faut donc cocher la case 5 si on veut que la redirection soit invisible pour les internautes.
Je coche donc les cases 2 et 5.
Mapper un site à un autre
En tant que super administrateur, je vais dans « admin du réseau » > « Sites » et je vois la liste des sites déjà créés :
Lorsqu’on passe la souris sur le nom d’un des sites, son adresse complète apparaît tout en bas du navigateur et on peut relever son ID :
Ici le site test1.potentiel-web.com affiche l’adresse « https://potentiel-web.com/wp-admin/network/site-info.php?id=3 ». L’ID est donc 3.
Maintenant, je vais dans « Réglages » > « Domains » et pour l’ID 3, je définis le domaine comme « test1.parcours-performance.com » :
Ensuite si je retourne dans la liste des sites et que je cliques sur « modifier » en dessous de test1.potentiel-web.com, je vois que l’adresse du site est restée https://test1.potentiel-web.com/ mais la liste indique un « mapping » vers test1.parcours-performance.com
Dans un navigateur, si je tape :
https://test1.potentiel-web.com/ m’affiche le site correspondant, dont le titre est test 1;
https://test1.parcours-performance.com, j’accède bien au site correspondant (dont le titre est toujours test1…) et son url visible dans le navigateur est restée https://test1.parcours-performance.com, si j’ai coché la case 5 des options de domaine (voir réglages ci-dessus).
Bilan de cette solution avec extension
Cette solution parait simple mais elle a deux inconvénients majeurs selon moi :
on est obligé de cocher l’option 5 si on veut que l’internaute ne voit pas la redirection. Ca génère un risque de contenu dupliqué pour les moteurs de recherche et ça ne me paraît pas acceptable.
Pour chaque domaine externe, on doit créer un sous-domaine du site principal ET le domaine externe. Ca prend un peu plus de temps et le risque d’erreur s’accroît.
C’est pour ces raisons que lorsque j’ai lu un sujet épinglé par l’auteur de l’extension qui expliquait qu’on n’a même pas besoin de l’extension, j’ai sauté dessus et je suis aller explorer la solution.
Sans extension – solution recommandée
créer un nouveau site
En tant que super administrateur, je vais dans « admin du réseau » > « Sites » et je vois la liste des sites déjà créés :
Je veux créer un nouveau site dans le réseau, avec l’url https://test1.parcours-performance.com. Dans la fenêtre des sites, je clique sur « ajouter » et je définis l’adresse web du site à RIEN (!) :
J’ai créé un site rien.potentiel-web.com, qui ne peut évidemment pas fonctionner puisque je n’ai pas créé ce sous-domaine dans mon espace client OVH. Il est visible dans la liste des sites du réseau WordPress :
Si je passe ma souris sur rien.potentiel-web.com, je vois apparaître « modifier ». Je clique dessus et dans « adresse web du site (URL) je remplace http://rien.potentiel-web.com/ par https://test1.parcours-performance.com. Après avoir sauvegardé la modification, je peux visiter le site et il fonctionne :
Maintenant un internaute peut accéder au site https://test1.parcours-performance.com. Mais je ne peux pas accéder à son tableau de bord pour l’instant !
Régler wp-config.php
Je ne peux pas accéder au tableau de bord du nouveau site car il y a un problème de « cookies » qui interdit la connexion. Dans le navigateur Chrome ou Firefox, j’obtiens un message « ERREUR les cookies sont bloqués ou ne sont pas reconnus par votre navigateur ». La seule solution est de modifier wp-config.php comme indiqué dans cet article de Tom McFarlin.
Dasn wp-config.php, les lignes relatives au multisite sont maintenant les suivantes, avec les 4 lignes surlignées qui règlent le problème de cookies :
Dans le tableau de bord WordPress, je supprime le site test2.potentiel-web.com mais je le laisse associé à l’hébergement potentiel-web.com dans mon espace client OVH.
Si je tape https://test2.potentiel-web.com dans un navigateur, je suis redirigée vers l’url https://potentiel-web.com/wp-signup.php?new=test2
Si je ne suis pas connectée en tant que super administrateur (c’est le cas dans le navigateur Firefox ci-dessous), je tombe sur une page m’informant que les inscriptions sont désactivées.
Lorsque les inscriptions sont désactivées, c’est que dans le tableau de bord du réseau de site, dans Réglages > Réglages du réseau, j’ai coché la case « Les inscriptions ne sont pas autorisées pour le moment ». Comme je ne prévois pas de laisser des utilisateurs externes créer des sites, et que mon hébergement OVH me contraint à aller créer les noms de domaine un à un (pas de « wildcard » *), je n’ai aucun intérêt à changer ce réglage.
Et maintenant ?
Dans les prochains articles de cette série WordPress Multisite sur OVH mutualisé, nous verrons comment sauvegarder un multisite, y insérer un site existant ou en sortir un.
Les hébergements OVH permettent tous d’héberger plusieurs sites. Pour un hébergement « pro », OVH recommande de ne pas dépasser 10 sites par hébergement. L’intérêt de l’hébergement pro est que l’on dispose de plusieurs bases de données. J’explique ici comment héberger plusieurs sites sur un même hébergement pro.
Les hébergements OVH permettent tous d’héberger plusieurs sites. Pour un hébergement « perso », la limite recommandée est 5 sites par hébergement.
On a une seule base de données mais on peut en commander d’autres. Ici, je note comment j’ai fait pour héberger plusieurs sites sur une même base de données, avec des WordPress distincts pour chaque site. (suite…)
Commentaires récents