Adobe Commerce on-premise: configurazione multi-store senza codici store negli URL

Quando si configura una nuova visualizzazione Store in Adobe Commerce con una struttura URL personalizzata, ad esempio www.example.com/dk, senza abilitare l'impostazione globale Aggiungi codice Store agli URL, il contenuto e il tema vengono visualizzati come previsto, ma nella pagina viene visualizzato un errore 404. Ciò si verifica anche quando NGINX è configurato con MAGE_RUN_TYPE e MAGE_RUN_CODE direttive.

Per risolvere questo problema, configura l’URL di base, aggiorna la configurazione di NGINX o del server e verifica il comportamento della sessione e del routing.

Descrizione description

Ambiente

Adobe Commerce On-Prem

Problema/Sintomi

  • Il contenuto specifico dell'archivio viene caricato correttamente, ma si verifica un errore 404 nella pagina.
  • NGINX è configurato per instradare le richieste per /dk/ utilizzando MAGE_RUN_TYPE e MAGE_RUN_CODE, ma la configurazione non funziona come previsto.

Risoluzione resolution

Per configurare una struttura URL personalizzata per una visualizzazione archivio specifica senza abilitare globalmente Aggiungi codice archivio agli URL, effettua le seguenti operazioni:

  1. Impostare gli URL di base per la nuova visualizzazione archivio nel pannello di amministrazione in Archivi > Configurazione > Generale > Web. Ad esempio, utilizzare https://www.example.com/dk/.

  2. Aggiorna la configurazione del server:

    • NGINX: Assicurarsi che la configurazione instradi /dk/ alla visualizzazione archivio corretta:

      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;
                              }
      
      • Alternativa (tutti i server Web): Creare un file magento-vars.php nella directory principale di 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;
      

      Includi questa come prima riga in pub/index.php:

      code language-none
      require __DIR__ . '/../magento-vars.php';
      
  3. Verificare che i cookie (ad esempio, PHPSESSID) siano impostati correttamente nelle risposte HTTP per garantire l'allineamento dei dati della sessione con l'archivio.

  4. Verificare la presenza di riscritture o reindirizzamenti aggiuntivi che potrebbero interferire con il routing.

  5. Se il contenuto viene caricato ma viene visualizzato un errore 404:

    • Esaminare i registri di Magento in var/log e i registri del server per individuare errori o configurazioni non corrette.

    • Cancellare la cache e reindicizzare i dati utilizzando CLI:

      code language-none
      bin/magento cache:clean
                          bin/magento indexer:reindex
      
  6. Dopo aver applicato queste modifiche, verifica l’accesso a diverse pagine nella vista Store Danimarca.

Lettura correlata

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