Ce n’est pas encore très connu mais WordPress gère le “domain mapping” en natif depuis quelques versions.

Par contre contrairement à la solution de mappage de domaine par l’intermédiaire d’une extension, la gestion native n’autorise qu’un unique domaine par site du réseau.

Avant

L’ancienne méthode pour associer un domaine à un site du réseau passait donc par l’ajout d’une extension telle que WordPress MU Domain Mapping. Il fallait également ajouter un fichier sunrise.php dans wp-content et activer le chargement de ce fichier depuis wp-config.php par l’ajout de la ligne define( ‘SUNRISE’, ‘on’ );. sunrize.php permet d’exécuter des actions avant tout chargement d’un site du réseau, il est donc à même de rediriger un domaine vers le site du réseau correspondant.

L’extension permettait alors de renseigner des domaines pour chacun des sites du réseau.

Maintenant

Dorénavant il est possible de mapper un domaine nativement sur WordPress multisites.

Pour ce faire il suffit de créer les sites du réseau de façon habituelle, que ce soit en sous domaine http://sitereseau.siteprincipal.fr ou en sous dossier http://www.siteprincipal.fr/sitereseau. Ensuite il faut modifier les réglages du site du réseau pour remplacer l’URL par le domaine de votre choix http://www.sitereau.fr.

WordPress gère une table wp_blogs qui va gérer la correspondance entre l’URL et l’ID du site du réseau.

[pastacode lang=”php” message=”A noter qu’il semble nécessaire d’ajouter cette ligne dans wp-config.php” highlight=”” provider=”manual”]
define( 'COOKIE_DOMAIN', $_SERVER[ 'HTTP_HOST' ] );
[/pastacode]

Il n’est pas possible de gérer plusieurs domaines pour un même site du réseau. J’ai même constaté que si le domaine est renseigné dans WordPress en www alors la version sans sous domaine (sitereseau.fr) pointera vers le site principal du réseau (www.siteprincipal.fr) et non vers le site du réseau (www.sitereseau.fr).

Idem pour les éventuels alias de domaine que vous souhaiteriez mettre en place. Vous allez régler la zone DNS du domaine alias pour ajouter un A Name ou un CName qui pointera vers l’IP du serveur hébergeant le réseau. Sur le serveur Apache le domaine sera ajouté comme un alias du domaine principal du réseau.

Pour gérer le domaine sans sous domaine (sitereseau.fr) et le domaine alias (www.aliassitereseau.fr et aliassitereseau.fr), nous allons utiliser le fichier .htaccess et y ajouter le code suivant.

[pastacode lang=”apacheconf” message=”” highlight=”” provider=”manual”]
# Redirection des alias de domaine
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^sitereseau\.fr$ [OR]
RewriteCond %{HTTP_HOST} .aliassitereseau\.fr [OR]
RewriteCond %{HTTP_HOST} ^aliassitereseau\.fr$
RewriteRule (.*)  http://www.sitereseau.fr/$1 [R=301,L]
</IfModule>
# Fin des rediretions des alias de domaine
[/pastacode]

De la sorte, sans aucune extension, nous sommes en mesure de mapper un domaine et des alias éventuels sur les différents sites de votre réseau de sites WordPress.