Adobe Commerce local: configuración de varias tiendas sin códigos de tienda en las direcciones URL

Al configurar una nueva vista de tienda en Adobe Commerce con una estructura de dirección URL personalizada, como www.example.com/dk, sin habilitar la configuración global Agregar código de tienda a direcciones URL, el contenido y el tema aparecen según lo esperado, pero la página muestra un error 404. Esto sucede incluso cuando NGINX está configurado con MAGE_RUN_TYPE y MAGE_RUN_CODE directivas.

Para solucionarlo, configure la dirección URL base, actualice la configuración de NGINX o del servidor y compruebe el comportamiento de sesión y enrutamiento.

Descripción description

Entorno

Adobe Commerce local

Problema/Síntomas

  • El contenido específico de la tienda se carga correctamente, pero genera una página de error 404.
  • NGINX está configurado para enrutar solicitudes de /dk/ mediante MAGE_RUN_TYPE y MAGE_RUN_CODE, pero la configuración no funciona como se esperaba.

Resolución resolution

Para configurar una estructura de dirección URL personalizada para una vista de tienda específica sin habilitar globalmente Agregar código de tienda a las direcciones URL, siga estos pasos:

  1. Establezca las direcciones URL base para la nueva vista de tienda en el panel de administración en Tiendas > Configuración > General > Web. Por ejemplo, use https://www.example.com/dk/.

  2. Actualice la configuración del servidor:

    • NGINX: Asegúrese de que la configuración enruta a /dk/ a la vista de almacén correcta:

      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 los servidores web): Cree un archivo de magento-vars.php en la raíz de 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 esto como la primera línea de pub/index.php:

      code language-none
      require __DIR__ . '/../magento-vars.php';
      
  3. Compruebe que las cookies (por ejemplo, PHPSESSID) estén configuradas correctamente en las respuestas HTTP para garantizar que los datos de sesión se alineen con el almacén.

  4. Compruebe si hay reescrituras o redirecciones adicionales que puedan interferir con el enrutamiento.

  5. Si el contenido se carga pero muestra un error 404:

    • Revise los registros de Magento en var/log y los registros del servidor para detectar errores o configuraciones incorrectas.

    • Borre la caché y reindexe los datos mediante CLI:

      code language-none
      bin/magento cache:clean
                          bin/magento indexer:reindex
      
  6. Pruebe el acceso a varias páginas de la vista de la tienda de Dinamarca después de aplicar estos cambios.

Lectura relacionada

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