Magento – Multisite sous Nginx avec nom de domaine ou sous dossiers

Par Damien L. le 15 juillet 2016
Lecture 1 minute

Voici une petite astuce Nginx qui pourrait vous intéresser concernant la mise en place du multidomaine avec Magento et Nginx.

Supposons que vous disposez déjà d’un :

location [...] {
[...]
fastcgi_param MAGE_RUN_CODE base;
fastcgi_param MAGE_RUN_TYPE store;
[...]
}

En amont de votre fichier (avant l’instruction « server »), il vous suffit de créer un mapping du type :

map $host$uri $store_code{
default fr;
~^www.monsite.com.* base;
~^www.monsite.us.* us;
~^www.monsite.com/fr/.* base;
~^www.monsite.com/us/.* us;
}

Ce système permet en effet de mapper des variables standards Nginx à des variables personnalisées. Dans notre cas, nous relions donc, selon les cas, des noms de domaines avec ou sans sous-domaines, à une variable qui contiendra simplement notre code de magasin ($store_code).

Par la suite, dans notre configuration, il suffit d’utiliser :

location [...] {
[...]
fastcgi_param MAGE_RUN_CODE $store_code;
fastcgi_param MAGE_RUN_TYPE store;
[...]
}

Il faudra également bien penser à créer les configurations associées dans Magento pour que cela fonctionne.

De plus, il faudra également préciser à Nginx que s’il ne trouve pas un fichier, il doit passer par « /index.php ». Cela permet notamment de gérer les sous-dossiers.

GIF