Adobe Commerce オンプレミス:URL にストアコードを含まないマルチストアのセットアップ

グローバルな www.example.com/dkURL にストアコードを追加 設定を有効にせずに、カスタム URL 構造( など)でAdobe Commerceに新しいストアビューを設定すると、コンテンツとテーマは期待どおりに表示されますが、ページに 404 エラーが表示されます。 これは、NGINX が MAGE_RUN_TYPE および MAGE_RUN_CODE ディレクティブで設定されている場合でも発生します。

これを修正するには、ベース URL を設定し、NGINX またはサーバー設定を更新し、セッションとルーティング動作を確認します。

説明 description

環境

Adobe Commerce オンプレミス

問題/症状

  • ストア固有のコンテンツは正しく読み込まれますが、404 error ページが発生します。
  • NGINX は、/dk/MAGE_RUN_TYPE を使用して MAGE_RUN_CODE のリクエストをルーティングするように設定されていますが、設定が期待どおりに動作しません。

解決策 resolution

グローバルに URL にストアコードを追加 を有効にせずに、特定のストアビューのカスタム URL 構造を設定するには、次の手順に従います。

  1. 管理パネルの Stores > Configuration > General > Web の下で、新しいストア表示のベース URL を設定します。 例えば、https://www.example.com/dk/ を使用します。

  2. サーバー設定を更新します。

    • NGINX: 構成ルートが正しいストア表示に /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;
                              }
      
      • 代替(すべての web サーバー): Magento ルートに magento-vars.php ファイルを作成します。
      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;
      

      これを pub/index.php の最初の行として含めます。

      code language-none
      require __DIR__ . '/../magento-vars.php';
      
  3. セッションデータがストアに整合するように、HTTP 応答で Cookie (PHPSESSID など)が正しく設定されていることを確認します。

  4. ルーティングを妨げる可能性のある追加の書き換えやリダイレクトがないか確認します。

  5. コンテンツが読み込まれても 404 エラーが表示される場合:

    • var/log およびサーバーログのMagento ログで、エラーや設定ミスを確認します。

    • CLI を使用してキャッシュをクリアし、データのインデックスを再作成します。

      code language-none
      bin/magento cache:clean
                          bin/magento indexer:reindex
      
  6. これらの変更を適用した後、デンマークのストア表示の様々なページへのアクセスをテストします。

関連資料

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