Adobe Commerce On-Premise: Multi-Store-Einrichtung ohne Store-Codes in URLs

Beim Einrichten einer neuen Store-Ansicht in Adobe Commerce mit einer benutzerdefinierten URL-Struktur - z. B. www.example.com/dk - ohne die globale Einstellung Store-Code zu URLs hinzufügen zu aktivieren, werden Inhalt und Design wie erwartet angezeigt, auf der Seite wird jedoch ein 404-Fehler angezeigt. Dies geschieht auch dann, wenn NGINX mit MAGE_RUN_TYPE- und MAGE_RUN_CODE-Anweisungen konfiguriert wird.

Um dies zu beheben, konfigurieren Sie die Basis-URL, aktualisieren Sie die NGINX- oder Server-Konfiguration und überprüfen Sie das Sitzungs- und Routing-Verhalten.

Beschreibung description

Umgebung

Adobe Commerce On-Premise

Problem/Symptome

  • Der speicherspezifische Inhalt wird korrekt geladen, führt jedoch zu einer 404-.
  • NGINX ist so konfiguriert, dass Anfragen für /dk/ mithilfe von MAGE_RUN_TYPE und MAGE_RUN_CODE weitergeleitet werden, aber die Einrichtung funktioniert nicht wie erwartet.

Auflösung resolution

Gehen Sie wie folgt vor, um eine benutzerdefinierte URL-Struktur für eine bestimmte Store-Ansicht zu konfigurieren, ohne Store-Code zu URLs hinzufügen global zu aktivieren:

  1. Legen Sie die Basis-URLs für die neue Store-Ansicht im Admin-Bedienfeld unter Stores > Configuration > General > Web fest. Verwenden Sie beispielsweise https://www.example.com/dk/.

  2. Aktualisieren Sie die Server-Konfiguration:

    • NGINX: Stellen Sie sicher, dass die Konfiguration zur richtigen Store-Ansicht /dk/:

      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 (Alle Webserver): Erstellen Sie eine magento-vars.php Datei im Magento-Stammverzeichnis:
      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;
      

      Fügen Sie dies als erste Zeile in pub/index.php ein:

      code language-none
      require __DIR__ . '/../magento-vars.php';
      
  3. Überprüfen Sie, ob Cookies (z. B. PHPSESSID) in HTTP-Antworten korrekt gesetzt sind, um sicherzustellen, dass die Sitzungsdaten mit dem Speicher übereinstimmen.

  4. Suchen Sie nach zusätzlichen Neuschreibungen oder Umleitungen, die das Routing beeinträchtigen könnten.

  5. Wenn der Inhalt geladen wird, aber einen 404-Fehler anzeigt:

    • Überprüfen Sie die Magento-Protokolle in den var/log- und Serverprotokollen auf Fehler oder Fehlkonfigurationen.

    • Löschen Sie den Cache und indizieren Sie Daten mithilfe der CLI neu:

      code language-none
      bin/magento cache:clean
                          bin/magento indexer:reindex
      
  6. Testen Sie den Zugriff auf verschiedene Seiten in der Dänemark-Store-Ansicht, nachdem Sie diese Änderungen angewendet haben.

Verwandtes Lesen

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