Posts Tagged ‘multisite’

WordPress en multisite, multi-domaines et importation !

3 novembre 2013

Depuis quelques temps, j’avais sur mon hébergement 2 blogs, celui-ci, et mon blog de radioamateur. Je souhaite, dans un avenir proche, migrer également sur mon hébergement perso un blog actuellement hébergé chez WordPress.com. La solution de facilité consistait à héberger une troisième installation de WordPress. Cette solution présente un grand nombre d’inconvénients, parmi elles, la mobilisation inutile d’espace disque (avec des fichiers dupliqués pour chaque installation), mais surtout, elle rend fastidieuse le maintient à jour des installations de WordPress, car à chaque mise à jour, il faut faire les mises à jour unes à unes (même problématique pour les plugins). Il va sans dire que déjà avec 2 blogs, j’avais régulièrement au moins l’un d’entre eux qui avait une ou plusieurs versions de retard, avec potentiellement donc une exposition aux failles de sécurité (bien que ceci devrait s’améliorer avec WordPress 3.7, puisque désormais les mises à jour vers les versions mineures se feront de façon automatique sans intervention de l’administrateur). Bref, hors de question pour moi de garder ce système en l’état avec un blog de plus.

A savoir qu’avec le multisite, certains comportements sont modifiés dans WordPress. Lorsque l’on est dans les tableaux de bords des blogs, il n’est plus possible par exemple d’installer des plugins. L’installation doit en effet impérativement se faire via l’interface d’administration du réseau, ensuite, chaque blog active ou non les différents plugins installés en fonction des besoins.

Logo WordPress

Logo WordPress

Je me suis donc penché sur l’installation de WordPress en réseau, qui permet de gérer plusieurs blogs avec une seule installation du moteur WordPress. 2 solutions sont possibles, une installation par sous-répertoire (chaque blog est accessible par un sous-répertoire – de type http://monsite.com/nom-blog) ou une installation par sous-domaine (de type http://nom-blog.monsite.com). Pour ma part, j’avais une difficulté supplémentaire, car je souhaitait héberger plusieurs domaines avec la même installation de WP (par exemple avoir monsite1.com et monsite2.com, mais aussi blog.monsite1.com qui soient 3 sites différents gérés par la même installation de WordPress). Ce cas de figure n’est pas geré nativement par WordPress, il existe heureusement un plugin qui permet de faire ceci (Mu Domain Mapping). Je ne vais pas détailler ici la procédure, je me suis basé sur celle proposée par ce blog, assez complète.

Cependant, voici les grandes étapes pour résumer (j’ai du relire plusieurs fois la procédure sur le site lié plus haut pour qu’elle soit claire dans ma tête) :

  1. Faire une installation classique de WordPress. A priori, il faut impérativement qu’elle soit à la racine du domaine pour que cela fonctionne.
  2. Editer wp-config.php pour activer le multi-site
  3. Installer le réseau WordPress via l’interface d’administration du site principal. Il faut bien choisir l’installation en sous-répertoires pour le multi-domaines avec le plugin Mu Domain Mapping (ça m’a paru étrange au début, mais en tout cas ça fonctionne).
  4. Installer Mu Domain Mapping
  5. Créer les différents blogs et configurer le domain mapping.

Importations de blogs existants

Ma seconde problématique était l’importation de blogs existants, de façon transparente (c’est à dire que leur noms de domaine ne changeaient pas…). WordPress sait importer les articles (et les médias liés), de façon automatique, mais à condition que le nouveau nom de domaine soit différent de l’ancien… En effet, pour importer les médias, WordPress recherche dans les articles les liens vers ceux-ci, puis les télécharge de l’ancienne adresse vers la nouvelle. Pour ma part, je souhaitais que les adresses restent les mêmes…

Après plusieurs essais, j’ai procédé comme suit :

  1. Mettre une adresse « temporaire » à l’ancien blog (par exemple passer de blog.vermot.net à blog-old.vermot.net) :
    1. Mettre le nouveau domaine dans les réglages de WordPress (Reglages –> Général –> Adresse web de WordPress (URL) et  Adresse web du site (URL)).
    2. Ici vous allez avoir un problème car les adresses vers les médias (images notamment) sont inscrites « en dur » dans les billets. Ils continuent donc de pointer vers l’ancienne adresse (blog.vermot.net). Ici, vous pouvez intervenir directement dans la base de données, pour mettre à jour l’ensemble des informations de la table wp_posts (la fonction REPLACE est votre amie).
    3. A ce stade, vous avez normalement un blog fonctionnel, à une nouvelle adresse temporaire. Vérifiez que tout fonctionne, puis exporter les posts via la fonction d’Export de WordPress (Outils –> Exporter)
  2. Créer le blog dans le réseau, avec l’ancienne adresse (blog.vermot.net). Il faut configurer intégralement les adresses du blog, sans quoi,  à l’importation, les mauvaises adresses seront utilisées et dés que vous mettrez la bonne adresse dans la config, plus rien ne fonctionnera au niveau des images.
    1. Créez le blog via l’administration principale
    2. Configurez le site : dans la page du site, indiquez
        • Dans l’onglet info, le domaine (http://blog.vermot.net)
        • Toujours dans l’onglet info, le chemin est vide (ou /)
      Configuration du multisite

      Configuration du multisite

        • Dans l’onglet reglages, vérifiez que les informations concordent (normalement elles sont mises à jour automatiquement avec les changements dans l’ongelt info).
        • Enfin, donnez les bonnes informations au plugin Mu Domain Mapping

      Configuration de Mu Domain Mapping

      Configuration de Mu Domain Mapping

    3. Enfin, connectez vous sur le nouveau site (blog.vermot.net), puis importez via la fonction d’import de WordPress (Outils –> Importer). Si tout se passe bien, les images de l’ancien blog seront importées dans le nouveau.
    4. Il ne vous reste plus qu’à réinstaller puis réactiver les différents plugin qui étaient présents sur votre ancien site.

Voila, j’espère que ce billet pourra permettre à ceux qui sont confrontés aux mêmes problèmes que moi d’avancer un peu plus rapidement que je ne l’ai fait.

Autre astuce : comme je l’ai dit plus haut, il faut que WordPress soit installé à la racine du domaine (vermot.net dans mon cas). Hors, je voulais conserver sur vermot.net une page d’accueil en HTML. Chez la plupart des hébergeurs, si un fichier index.php et un fichier index.html sont présents dans le répertoire d’accueil, alors l’un ou l’autre sera servi en priorité (souvent le .html). Cette configuration est normalement éditable, mais certaines hébergeurs (notamment sur des serveurs mutualisés) ne permettent pas la modification. Dans mon cas, si je laissait le fichier index.html, plus rien ne fonctionnait, car tous les domaines affichaient alors ce fichier (index.html prioritaire sur index.php de WordPress). Par ailleurs, sur vermot.net, si je supprimais ce fichier, j’avais alors un blog vierge qui s’affichait. J’ai donc renommé mon fichier index.html en index.welcome, ainsi, c’est bien l’index.php qui est chargé par défaut. J’ai installé et activé sur le WordPress qui s’affichait sur vermot.net le plugin Redirection, et je fait tout simplement, grâce à ce plugin, une redirection de toutes les requettes vers vermot.net vers le fichier index.welcome. Ainsi, les autres domaines affichent bien le WordPress, et vermot.net affiche ma page HTML ! Le tour est joué !