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

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

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

説明 description

環境

Adobe Commerce オンプレミス

問題/症状

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

解決策 resolution

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

  1. ストア > 設定> 一般> 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
experience-cloud-kcs-help-kbarticles