Nativement la plateforme Magento permets de créer plusieurs sites webs totalement différents tout en utilisant le même code et le même dossier sur votre serveur et cela avec des urls différentes !

Il est cependant ensuite nécessaire de réaliser un mapping pour que Magento trouve quelle boutique charger avec quelle url

En partant des pré-requis suivants :

  • votre configuration apache ou nginx est déjà en place et que l’ensemble des noms de domaines pointent bien vers le même dossier
  • Nous allons tester 3 sites
    • www.shop.fr ( Site FR / Code du magasin magento : fr )
    • www.shop.de ( Site DE / Code du magasin magento : de )
    • www.shop.com ( Site EN / Code du magasin magento : en )
  • Les configurations des magasins sont en place dans magento

Nous allons voir ensemble les différentes possibilités qui existent pour réaliser cela.

Serveur Apache : fichier .htacess
Editer le fichier .htacess situé à la racine de magento et rajouter les lignes suivantes

SetEnv MAGE_RUN_TYPE store
SetEnvIf Host www\.shop\.fr MAGE_RUN_CODE=fr
SetEnvIf Host www\.shop\.de MAGE_RUN_CODE=de
SetEnvIf Host www\.shop\.com MAGE_RUN_CODE=en

Serveur nginx : fichier conf
Dans le fichier de configuration de votre vhost avant le noeud « server » rajouter la map suivante :

map $http_host $magecode {
       www.shop.fr fr;
       www.shop.de de;
       www.shop.com en;
    }

Puis dans la configuration des fichiers php , rajouter les éléments suivants :

location ~ \.php$ { ## Execute PHP scripts
        ...
        fastcgi_param  MAGE_RUN_CODE $magecode;
        fastcgi_param  MAGE_RUN_TYPE store;
        ..
    }

Toutes plateformes : fichier index.php
Avant l’appel du code

/* Store or website code */
$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : '';
 
/* Run store or run website */
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store';

Ajouter les lignes suivantes :

$mageRunType = 'store';
switch($_SERVER['HTTP_HOST']) {
    case 'www.shop.fr':
        $mageRunCode = 'fr';
    break;
    case 'www.shop.de':
        $mageRunCode = 'de';
    break;
    case 'www.shop.com':
        $mageRunCode = 'en';
    break;
 
}

 

A vous de choisir parmi ces solutions celle qui correspond le mieux à vos besoins ou à vos accès sur l’hébergement 😉