Adobe Commerce no local: Configuração de várias lojas sem códigos de loja em URLs

Ao configurar uma nova exibição de armazenamento no Adobe Commerce com uma estrutura de URL personalizada, como www.example.com/dk, sem ativar a configuração global Adicionar código de armazenamento a URLs, o conteúdo e o tema serão exibidos conforme esperado, mas a página exibirá um erro 404. Isso acontece mesmo quando NGINX está configurado com diretivas MAGE_RUN_TYPE e MAGE_RUN_CODE.

Para corrigir isso, configure o URL de base, atualize o NGINX ou a configuração do servidor e verifique o comportamento da sessão e do roteamento.

Descrição description

Ambiente

Adobe Commerce no local

Problema/Sintomas

  • O conteúdo específico do armazenamento é carregado corretamente, mas resulta em um erro 404 página.
  • O NGINX está configurado para rotear solicitações para /dk/ usando MAGE_RUN_TYPE e MAGE_RUN_CODE, mas a configuração não funciona conforme esperado.

Resolução resolution

Para configurar uma estrutura de URL personalizada para uma exibição de repositório específica sem habilitar globalmente Adicionar Código de Repositório às Urls, siga estas etapas:

  1. Defina as URLs de base para a nova exibição de armazenamento no painel de administração em Lojas > Configuração > Geral > Web. Por exemplo, use https://www.example.com/dk/.

  2. Atualize a configuração do servidor:

    • NGINX: certifique-se de que a configuração roteia /dk/ para a exibição de repositório correta:

      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 (Todos os Servidores Web): Crie um arquivo magento-vars.php na raiz do 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;
      

      Incluir esta como a primeira linha em pub/index.php:

      code language-none
      require __DIR__ . '/../magento-vars.php';
      
  3. Verifique se os cookies (por exemplo, PHPSESSID) estão definidos corretamente nas respostas HTTP para garantir que os dados da sessão se alinhem ao repositório.

  4. Verifique se há regravações ou redirecionamentos adicionais que possam interferir no roteamento.

  5. Se o conteúdo for carregado, mas mostrar um erro 404:

    • Examine os logs do Magento em var/log e os logs do servidor em busca de erros ou configurações incorretas.

    • Limpe o cache e reindexe os dados usando a CLI:

      code language-none
      bin/magento cache:clean
                          bin/magento indexer:reindex
      
  6. Teste o acesso a várias páginas na exibição de armazenamento da Dinamarca após aplicar essas alterações.

Leitura relacionada

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