Adobe Commerce On-premise : configuration multi-magasin sans codes de magasin dans les URL

Lors de la configuration d’une nouvelle vue de boutique dans Adobe Commerce avec une structure d’URL personnalisée (telle que www.example.com/dk) sans activer le paramètre global Ajouter le code de boutique aux URL, le contenu et le thème apparaissent comme prévu, mais la page affiche un message d’erreur 404. Cela se produit même lorsque NGINX est configuré avec des directives MAGE_RUN_TYPE et MAGE_RUN_CODE.

Pour corriger ce problème, configurez l’URL de base, mettez à jour la configuration de NGINX ou du serveur, et vérifiez la session et le comportement de routage.

Description description

Environnement

Adobe Commerce On-Prem

Problème/Symptômes

  • Le contenu spécifique au magasin se charge correctement, mais génère une page d’erreur 404.
  • NGINX est configuré pour acheminer les demandes de /dk/ à l’aide de MAGE_RUN_TYPE et MAGE_RUN_CODE, mais la configuration ne fonctionne pas comme prévu.

Résolution resolution

Pour configurer une structure d’URL personnalisée pour une vue de magasin spécifique sans activer globalement Ajouter le code de magasin aux URL, procédez comme suit :

  1. Définissez les URL de base pour la nouvelle vue de magasin dans le panneau d’administration sous Magasins > Configuration > Général > Web. Par exemple, utilisez https://www.example.com/dk/.

  2. Mettez à jour la configuration du serveur :

    • NGINX : assurez-vous que les itinéraires de configuration /dk/ à l’affichage correct du magasin :

      code language-none
      location = /dk {
                          return 301 /dk/;
                          }
                          location   /dk/ {
                              set $MAGE_RUN_TYPE store;
                              set $MAGE_RUN_CODE dk;
                              try_files $uri $uri/ /index.php$is_args$args;
                              }
      
      • Alternative (Tous les serveurs web) : créez un fichier magento-vars.php dans la racine Magento :
      code language-none
      <?php
                      $uri = explode('/', trim($_SERVER[ 'REQUEST_URI'] , '/'));
                      $code = 'default';
                      $type = 'website'; // or 'store'
                      if (isset($uri[ 0] ) && $uri[ 0]  === 'dk') {
                          $code = 'dk';
                          $type = 'store'; // usually 'store' for store views, 'website' for websites
                          }
                          $_SERVER[ 'MAGE_RUN_CODE']  = $code;
                          $_SERVER[ 'MAGE_RUN_TYPE']  = $type;
      

      Inclure ceci comme première ligne dans pub/index.php :

      code language-none
      require __DIR__ . '/../magento-vars.php';
      
  3. Vérifiez que les cookies (par exemple, PHPSESSID) sont correctement définis dans les réponses HTTP pour vous assurer que les données de session s’alignent sur le magasin.

  4. Recherchez d’autres réécritures ou redirections qui pourraient interférer avec le routage.

  5. Si le contenu se charge mais affiche une erreur 404 :

    • Consultez les journaux Magento dans les journaux var/log et serveur pour détecter les erreurs ou les configurations incorrectes.

    • Effacez le cache et réindexez les données à l’aide de l’interface de ligne de commande :

      code language-none
      bin/magento cache:clean
                          bin/magento indexer:reindex
      
  6. Testez l’accès à différentes pages dans la vue de magasin Danemark après l’application de ces modifications.

Lecture connexe

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f