ルートの設定
.magento/routes.yaml ディレクトリのroutes.yaml ファイルは、クラウドインフラストラクチャのIntegration、Staging、およびProduction環境で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環境の設定の更新
routes.yaml ファイルのルート設定と.magento.app.yaml ファイルのcron設定を更新するために、Adobe サポートの支援が必要です。 Adobeでは、まず統合環境で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/
末尾のスラッシュ
ルート定義には、フォルダーまたはディレクトリを示す末尾のスラッシュが含まれていますが、同じコンテンツを末尾のスラッシュの有無で提供できます。 次のURLは同じように解決されますが、2つの異なる URLとして解釈できます。
https://www.example.com/blog/
https://www.example.com/blog
プロトコルのルーティング
すべての環境で、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: redirectto プロパティが続きます。このプロパティは、テンプレートによって識別される別のルートへの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 on cloud infrastructureはワイルドカードルートをサポートしているので、複数のサブドメインを同じアプリケーションにマッピングできます。 これは、リダイレクト ルートとアップストリーム ルートに対して機能します。 ルートの先頭にはアスタリスク(*)を付けます。 例えば、同じアプリケーションに対して次のルートを作成します。
*.example.comwww.example.comblog.example.comus.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を使用してルートを一覧表示します。
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