ルートの設定

.magento/routes.yaml ディレクトリの routes.yaml ファイルは、クラウドインフラストラクチャ統合、ステージングおよび実稼動環境でのAdobe Commerceのルートを定義します。 ルートは、受信する HTTP リクエストと HTTPS リクエストをアプリケーションがどのように処理するかを決定します。

デフォルトの routes.yaml ファイルは、単一のデフォルトドメインを持つプロジェクトと、複数のドメインに対して設定されたプロジェクトで、HTTP リクエストを HTTPS として処理するためのルートテンプレートを指定します。

"http://{default}/":
    type: upstream
    upstream: "mymagento:http"
"http://{all}/":
    type: upstream
    upstream: "mymagento:http"

magento-cloud CLI を使用して、設定済みルートのリストを表示します。

magento-cloud environment:routes

+-------------------+----------+---------------+
| Route             | Type     | To            |
+-------------------+----------+---------------+
| http://{default}/ | upstream | mymagento     |
+-------------------+----------+---------------+

Pro 環境の設定アップデート

WARNING
一部の Pro プロジェクト では、routes.yaml ファイルのルート設定と .magento.app.yaml ファイルの cron 設定を更新するために、サポートチケットが必要です。 Adobe環境で YAML 設定ファイルを更新およびテストしたあと、変更内容をステージング環境にデプロイすることをお勧めします。 再デプロイ後に変更がステージングサイトに適用されず、関連するエラーメッセージがログに存在しない場合は、必須Adobe Commerce サポートチケットを送信すると、試みた設定変更に関する説明が表示されます。 更新された YAML 設定ファイルをチケットに含めます。

ルートテンプレート

routes.yaml ファイルは、テンプレート化されたルートとその設定のリストです。 ルートテンプレートでは、以下のプレースホルダーを使用できます。

  • {default} プレースホルダーは、プロジェクトのデフォルトとして設定された修飾ドメイン名を表します。

    例えば、デフォルトのドメイン example.com と次のルートテンプレートを使用するプロジェクトの場合は、

    code language-text
    https://www.{default}/
    https://{default}/blog
    

    これらのテンプレートは、実稼動環境では次の URL に解決されます。

    code language-text
    https://www.example.com/
    https://example.com/blog
    
  • {all} プレースホルダーには、プロジェクトに設定されたすべてのドメイン名が表示されます。

    例えば、次のルートテンプレートを持つ example.com ドメインと example1.com ドメインを持つプロジェクトでは、

    code language-text
    https://www.{all}/
    
    https://{all}/blog
    

    これらのテンプレートは、プロジェクト内のすべてのドメインの次のルートに解決されます。

    code language-text
    https://www.example.com/
    
    https://www.example1.com/
    
    https://example.com/blog
    
    https://example1.com/blog
    

    {all} プレースホルダーは、複数のドメイン用に設定されたプロジェクトに役立ちます。 実稼動以外のブランチでは、{all} は各ドメインのプロジェクト ID と環境 ID に置き換えられます。

    プロジェクトにドメインが設定されていない場合(開発時に一般的)、{all} プレースホルダーは {default} プレースホルダーと同じ方法で動作します。

Adobe Commerceは、アクティブな統合環境ごとにルートも生成します。 統合環境の場合、{default} のプレースホルダーは次のドメイン名に置き換えられます。

[branch]-[per-environment-random-string]-[project-id].[region].magentosite.cloud

例えば、us クラスターでホストされる mswy7hzcuhcjw プロジェクトの refactorcss ブランチには、次のドメインがあります。

https://refactorcss-oy3m2pq-mswy7hzcuhcjw.us.magentosite.cloud/
NOTE
クラウドプロジェクトが複数のストアをサポートしている場合は、 複数の web サイトまたはストアのルート設定手順に従います。

末尾のスラッシュ

ルート定義には、フォルダーまたはディレクトリを示す末尾のスラッシュが含まれています。ただし、末尾のスラッシュの有無にかかわらず、同じコンテンツを提供できます。 次の URL は同じように解決されますが、2 つの異なる URL として解釈される可能性があります。

https://www.example.com/blog/

https://www.example.com/blog
TIP
ディレクトリには末尾のスラッシュを使用することをお勧めしますが、どちらの方法を選択する場合でも、2 つの場所を生成しないようにするために、一貫性を維持 することが重要です。

ルート プロトコル

すべての環境で、HTTP と HTTPS の両方を自動的にサポートしています。

  • 設定で HTTP ルートのみが指定されている場合、HTTPS ルートが自動的に作成され、リダイレクトを必要とせずにサイトが HTTP と HTTPS の両方から提供されます。

    例えば、デフォルトのドメイン example.com と次のルートテンプレートを持つプロジェクトの場合:

    code language-text
    http://{default}/
    

    このテンプレートは次の URL に解決されます。

    code language-text
    http://example.com/
    
    https://example.com/
    
  • 設定で HTTPS ルートのみが指定されている場合、すべての HTTP リクエストは HTTPS にリダイレクトされます。

    例えば、デフォルトのドメインを持つプロジェクト example.com、次のルートテンプレートを持つプロジェクトです。

    code language-text
    https://{default}/
    

    このテンプレートは次の URL に解決されます。

    code language-text
    https://example.com/
    

    また、次のリダイレクトも処理します。

    http://example.com/ ==> https://example.com/

TLS 経由ですべてのページを提供します。 この設定では、次のいずれかの方法を使用して、暗号化されていないすべてのリクエストを TLS と同等の値にリダイレクトするように設定する必要があります。

  • routes.yaml ファイルのプロトコルを HTTPS に変更します。

    code language-yaml
    "https://{default}/":
        type: upstream
        upstream: "mymagento:http"
    "https://{all}/":
        type: upstream
        upstream: "mymagento:http"
    
  • ステージング環境と実稼動環境の場合は、管理 UI から「Fastly で TLS を強制」オプションを有効にします。 このオプションを使用すると、Fastly は HTTPS へのリダイレクトを処理するので、routes.yaml 設定を更新する必要はありません。

ルートオプション

次のプロパティを使用して、各ルートを個別に設定します。

プロパティ
説明
type: upstream
アプリケーションを提供します。 また、(.magento.app.yaml で定義された)アプリケーションの名前の後に :http エンドポイントを指定する upstream プロパティもあります。
type: redirect
別のルートにリダイレクトします。 その後に to プロパティが続きます。これは、テンプレートで識別される別のルートへの HTTP リダイレクトです。
cache:
ルートのキャッシュを制御します。
redirects:
コントロール リダイレクトルール
ssi:
サーバーサイドインクルードの有効化を制御します。

シンプルなルート

次の例では、ルート設定は apex ドメインと www サブドメインを mymagento アプリケーションにルーティングします。 このルートでは、HTTPS リクエストはリダイレクトされません。

例 1:

"http://{default}/":
    type: upstream
    upstream: "mymagento:http"

"http://www.{default}/":
    type: redirect
    to: "http://{default}/"

この例では、リクエストルーティングは次のルールに従います。

  • サーバーは、次の URL パターンを使用してリクエストに直接応答します。

    code language-text
    http://example.com/path
    
  • サーバーは、次の URL パターンのリクエストに対して 301 リダイレクト を発行します。

    code language-text
    http://www.example.com/mypath
    

    これらのリクエストは、apex ドメインにリダイレクトされます。例:

    code language-text
    http://example.com/mypath
    

次の例では、ルート設定で www ドメインから apex ドメインに URL がリダイレクトされません。 代わりに、リクエストは www ドメインと apex ドメインの両方から提供されます。

例 2:

"http://{default}/":
    type: upstream
    upstream: "mymagento:http"

"http://www.{default}/":
    type: upstream
    upstream: "mymagento:http"

ワイルドカードルート

クラウドインフラストラクチャー上のAdobe Commerceでは、ワイルドカードルートをサポートしているので、複数のサブドメインを同じアプリケーションにマッピングできます。 これは、リダイレクト ルートとアップストリーム ルートで機能します。 ルートの前にはアスタリスク(*)を付けます。 例えば、同じアプリケーションに対して次のようなルートがあります。

  • *.example.com
  • www.example.com
  • blog.example.com
  • us.example.com

これは、ライブ環境ではキャッチオール ドメインとして機能します。

マッピングされていないドメインのルーティング

ドット(.)を使用して、ドメインにマッピングされていないシステムにルーティングすることで、サブドメインを分離できます。

例:

add-theme ブランチを持つプロジェクトは、次の URL にルーティングされます。

http://add-theme-projectID.us.magento.com/

次のルートテンプレートを定義する場合:

http://www.{default}/

ルートは次の URL に解決されます。

http://www.add-theme-projectID.us.magento.com/

ドットとルートが解決される前に任意のサブドメインを挿入できます。

例:

次のルートテンプレートを定義します。

http://*.{default}/

このテンプレートは次の両方の URL を解決します。

http://foo.add-theme-projectID.us.magentosite.cloud/
http://bar.add-theme-projectID.us.magentosite.cloud/

マッピングされていないドメインのルートパターンを確認するには、環境への SSH 接続を確立し、magento-cloud CLI を使用してルートをリストします。

web@mymagento.0:~$ vendor/bin/ece-tools env:config:show routes

Magento Cloud Routes:
+------------------------------------------+--------------------------------------------------------------+
| Route configuration                      | Value                                                        |
+------------------------------------------+--------------------------------------------------------------+
| http://www.add-theme-projectID.us.magento.com/:                                                         |
+------------------------------------------+--------------------------------------------------------------+
| primary                                  | false                                                        |
| id                                       | null                                                         |
| attributes                               |                                                              |
| type                                     | upstream                                                     |
| to                                       | mymagento                                                    |
| original_url                             | https:/{default}/                                            |
+------------------------------------------+--------------------------------------------------------------+
| https://*.add-theme-projectID.us.magentosite.cloud/:                                                    |
+------------------------------------------+--------------------------------------------------------------+
| primary                                  | false                                                        |
| id                                       | null                                                         |
| attributes                               |                                                              |
| type                                     | upstream                                                     |
| to                                       | mymagento                                                    |
| original_url                             | https://*.{default}/                                         |
+------------------------------------------+--------------------------------------------------------------+

リダイレクトとキャッシュ

リダイレクトで詳しく説明しているように、部分リダイレクト などの複雑なリダイレクトルールを管理したり、ルートベースの キャッシュのルールを指定したりできます。

https://www.{default}/:
    type: redirect
    to: https://{default}/
https://{default}/:
    cache:
        cookies: [""]
        default_ttl: 0
        enabled: true
        headers:
            - Accept
            - Accept-Language
    ssi:
        enabled: false
    type: upstream
    upstream: mymagento:http
recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26