Magento 2 Multistore su domini differenti

Nel caso si abbia un eCommerce multilingua con Magento 2.4 potrebbe essere comodo gestire i multistore attraverso domini differenti.

Ad esempio si richiede che:

  • Store 1, lingua italiana –> dominioItaliano.it
  • Store 2, lingua inglese –>dominioinglese.com
  • Store 3, lingua tedesca –> dominiotedesco.de

Tralasciando la configurazione delle impostazioni di Magento che è la parte più semplice, è fondamentale modificare il server su due livelli:

  • Modifica del server per rimanere in ascolto su quel dominio
  • Modifica del file index.php di Magento per reindirizzare la richiesta sullo store di riferimento.

Per quanto riguarda la modifica della configurazione interna di magento 2.4 multistore su diversi domini si rimanda alla documentazione ufficiale

Modifica del server per l’ascolto su differenti domini

I concetti elencati sono stati applicati su un server Apache, ma con qualche modifica è possibile portarli anche su Nginx

Un’altra nota da fare è che in questo caso si analizza solamente la modifica del server sulla porta 80 ignorando configurazioni diverse come Varnish o come SSL.

Nel caso in cui si utlizzi Varnish risulterà obbligatorio gestire il cambio delle porte da 80 a 81 mentre per quanto riguarda la configurazione dell’https è da gestire il redirect sulla porta 443.

Passo 1: Aggiungere nei file di configurazione un Virtualhost per ogni lingua.

Configurazione per dominio italiano

<VirtualHost dominioitaliano.it:80>
...
ServerName dominioitaliano.it
DocumentRoot "/var/www/html/magento/htdocs"
...  
<Directory "/var/www/html/magento/htdocs">
      Options Indexes FollowSymLinks
    AllowOverride All
    <IfVersion < 2.3 >
      Order allow,deny                          
      Allow from all
    </IfVersion>
    <IfVersion >= 2.3 >
      Require all granted
    </IfVersion>
  </Directory>

---
  ErrorDocument 503 /503.html

</VirtualHost>

Configurazione per dominio inglese

<VirtualHost dominioitaliano.com:80>
...
ServerName dominioinglese.com
DocumentRoot "/var/www/html/magento/htdocs"
...  
<Directory "/var/www/html/magento/htdocs">
      Options Indexes FollowSymLinks
    AllowOverride All
    <IfVersion < 2.3 >
      Order allow,deny                          
      Allow from all
    </IfVersion>
    <IfVersion >= 2.3 >
      Require all granted
    </IfVersion>
  </Directory>

---
  ErrorDocument 503 /503.html

</VirtualHost>

A questo punto il server sarà in ascolto su quei domini e girerà la richiesta al framework che successivamente dovrà configurare il bootstrap per la chiamata al frontend corretto.

Modifica del file di index.php per la corretta gestione del frontend di Magento

Per fare in modo che Magento 2 carichi il frontend corretto si può modificare il file index.php all’interno della root. Vanno aggiunte prima del bootstrap le seguenti linee di codice

$params = $_SERVER;

switch($_SERVER['HTTP_HOST']) {

        case 'dominioitaliano.it':
        case 'www.dominioitaliano.it':
             $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'it';
                         $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'store';
        break;


        case 'dominioinglese.com':
        case 'www.dominioinglese.com':
             $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'en';
                         $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'store';
        break;
    }

Se hai ancora bisogno di aiuto nella configurazione di Magento 2 e della gestione multistore su domini differenti contattaci pure attraverso il seguente form

[contact-form-7 id=”8″ title=”Contact form 1″]

Leave a Comment

Your email address will not be published. Required fields are marked *