Le réseau de site permet d’utiliser un seul site WordPress avec sa base de données pour générer autant de sous-sites que vous désirez. À grande échelle, c’est la configuration de WordPress.com. Pour les utilisateurs plus avancés, vous pourrez utiliser le plug-in WordPress MU Domain Mapping pour que chaque site ait sa propre adresse.
Attention, l’activation d’un réseau de sites suppose que vous ayez un serveur conséquent; un serveur virtualisé (VPS) ou un serveur dédié. Rien ne vous empêche de faire des tests sur un serveur mutualisé, mais sachez que cela peut être rapidement gourmand en ressource.
Activation du réseau
Il s’agit de rendre dans le fichier wp-config.php qui se trouve à la racine de votre site WordPress. C’est dans ce même fichier que vous déterminez:
- le lien vers la base de données
- la langue choisie pour votre site
Pour activer le réseau, il faut rentrer cette commande juste au-dessus de la ligne /* C’est tout, ne touchez pas à ce qui suit ! Bon blogging ! */, comme le code qui s’affiche ci-dessous.
/* Multisite */
define('WP_ALLOW_MULTISITE', true);
/* C'est tout, ne touchez pas à ce qui suit ! Bon blogging ! */
Rendez-vous dans le back office pour voir le nouveau menu apparaître.
Création du réseau
Après avoir installé la commande un nouveau menu apparaît dans votre back-office.
En cliquant sur ce lien Création du réseau, vous allez être redirigé vers une nouvelle page. Tous les extensions devront être désactivées. Il vous sera demandé deux choses, le Nom du réseau et l’Adresse de contact de l’administrateur. Ces deux éléments pourront être modifiés plus tard. Une fois les éléments ajoutés, vous pouvez cliquer sur Installer.
La page se recharge. De nouveaux éléments apparaissent comme ci-dessous dans cette capture d’écran.
1 Création du dossier sites
Ce dossier se trouve à la racine du dossier uploads. Il se crée automatiquement dès que vous avez plus d’un site pour stocker les médias des différents sous-sites.
2 Réglage du fichier wp-config.php
Vous allez copier/coller les lignes de code dans votre fichier wp-config.php en dessous de la ligne précédemment ajoutées au final cela donnera quelque chose qui ressemble à ça:
/* Multisite */
define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'localhost');
define('PATH_CURRENT_SITE', '/www/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
/* C'est tout, ne touchez pas à ce qui suit ! Bon blogging ! *
En fonction de votre installation, vous pourrez activer la fonction subdomain et dans ces cas il faudra changer la ligne en:
define('SUBDOMAIN_INSTALL', true);
Avec true, vos sous-sites auront ce type d’url:
http://sous-site.site-principal.com
Avec false, ils auront:
http://www.site-principal.com/sous-site/
Dans les deux cas, vous pourrez utiliser l’extension WordPress MU Domain Mapping pour activer un nom de domaine différent pour chaque site.
3 Réglage du fichier .htaccess
Ce fichier .htaccess est un fichier masqué sur les serveurs de type Apache. Vous devez avoir un Client-serveur ou Client FTP qui vous permet de voir ce type de fichier. Des codes sont à copier/coller pour remplacer toutes les règles existantes de WordPress. À la première installation, WordPress nécessite des règles qui s’ajoutent automatiquement ou que vous devez ajouter manuellement.
Elle ressemble à ça avec # BEGIN WordPress au début et # END WordPress à la fin.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress
Remplacer toutes ces règles par ces nouvelles qui vous sont données. Vous pourrez laisser les deux lignes qui commencent par #. Ce caractère sert à faire des commentaires dans les fichiers .htaccess. Une fois cette opération terminée, vous serez invité à vous reconnecter à votre back-office. Un nouveau menu apparaîtra dans la barre noire du haut.
Ce menu donnera accès à tous les sites liés à votre compte ainsi que le tableau de bord réservé à l’administrateur du réseau. Pour y accéder, l’utilisateur devra avoir le rôle de Super Administrateur. Et si plusieurs sites sont associés à votre compte WordPress la liste s’affichera dans ce même menu.
Supprimer « blog » des permaliens
Si vous êtes en mode sous répertoire, après l’activation du réseau, le mot « blog » apparaît dans les permaliens. Il est préférable de supprimer ce texte tout de suite avant de créer des nouveaux sites.
Vérifier la structure des permaliens
Dans le menu Réglages > Permaliens en le laissant sur Nom de l’Article. Ici, je vois que blog a été rajouté après l’activation du multisite.
Pour le modifier, je dois me rendre les réglages du réseau.
Accéder aux réglages du site
J’accède à tous les sites depuis mon nouveau menu. Mes sites > Sites. Chaque site peut avoir des réglages spécifiques quand on les édite.
Changer la structure des Permaliens
Une fois dans l’onglet Réglages, il faut chercher le champs Permalink Structure pour le modifier. De /blog/%postname%/ il deviendra /%postname%/. Voici une capture avant.
Et une capture après:
Vérifier une dernière fois
Dans le back-office du site lui-même en enregistrant à nouveau, sans rien changer. Attention, mon site est en local dans un dossier www.
Autres points à retenir
Utilisation du Wildcard
Pour avoir automatiquement les sous-domaines. Il s’agit dans vos DNS d’ajoute un enregistrement de type A avec comme valeur * qui pointe vers l’adresse IP de votre serveur.
Ensuite, attendre que les DNS se propagent.
Enfin voici un outil pour vérifier vos DNS y compris le Widlcard qu’il faut cocher. Une fois votre nom de domaine coché, il faut que toutes les adresses IP soient les mêmes, y compris celle avec login.votredomaine.com
Redirection infinie après la création
Attention au moment de l’instalation, WordPress peut vous proposez ce type de règles. Cela peux provoquer une erreur avec une redirection infinie.
<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]
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>
Dans ce cas, remplacer par:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
</IfModule>
Note sur certains hébergements
Comme sur OVH qui parfois pose problème. Merci Alexandre Bekliz pour le tuyau.
En effet, pour ceux dont l’hébergement ne permet pas le choix entre sous domaines et sous dossiers, ces petites lignes de code à insérer dans le functions.php du thème en cours permettent de résoudre le problème et ainsi d’avoir le choix à la création du réseau.
Cela peut aider en fonction de l’hébergement d’un client.
Dans ce cas, il est possible de personnaliser son installation (ici en sous-dossier) en ajoutant ces lignes dans le fichier function.php de votre thème
add_filter( 'allow_subdirectory_install', '__return_true' );
Le détail est donné dans ce tutoriel.
Liens et ressources
- Très bon article de fond par imath sur l’histoire et l’intérêt du Multisite: A l’origine de WordPress Multisite il y avait WordPress µ !
- Faire du Domain Mapping avec WordPress multisite. Pour utiliser des domaines différents pour chaque site du réseau.