リダイレクト

リダイレクトルールの管理は、web アプリケーションの一般的な要件です。特に、時間の経過とともに変更または削除された受信リンクを失いたくない場合に必要です。

次に、routes.yaml設定ファイルを使用して、Adobe Commerce on cloud infrastructure プロジェクトのリダイレクトルールを管理する方法を示します。 このトピックで説明したリダイレクト方法が機能しない場合は、キャッシュヘッダーを使用して同じことを行うことができます。

NOTE
次のルート設定例では、ルートテンプレートとプレースホルダーを使用しています。 {default} プレースホルダーは、サイトに設定された既定のドメインを表します。 プロジェクトに複数のドメインがある場合は、{all} プレースホルダーを使用して、デフォルトドメインとすべてのエイリアスのルーティングを設定します。 ​ ルートの設定を参照してください。

Pro環境へのアップデート

WARNING
一部の​ Pro プロジェクト ​では、routes.yaml ファイルのルート設定と.magento.app.yaml ファイルのcron設定を更新するために、Adobe サポートの支援が必要です。 Adobeでは、まず統合環境でYAML設定の変更をすべて行って検証し、その後ステージング環境にデプロイすることをお勧めします。
変更が再デプロイ後にステージングサイトに反映されず、ログに関連するエラーメッセージが表示されない場合は、Adobe Commerce サポートチケット 🔗​送信する必要があります。 チケットで、試した設定の変更を明確に説明し、更新されたYAML設定ファイルをチケットに添付します。
WARNING
Adobe Commerce on cloud infrastructure プロジェクトの場合、routes.yaml ファイルで多数の非regex リダイレクトと書き換えを設定すると、パフォーマンスの問題が発生する可能性があります。 routes.yaml ファイルが32 KB以上の場合は、正規表現でないリダイレクトをオフロードし、Fastlyに書き換えます。 Adobe Commerce ヘルプセンター​の「正規表現でないリダイレクトをNginx (ルート) ​ではなくFastlyにオフロードする」を参照してください。

ルート全体のリダイレクト

ルート全体のリダイレクトを使用すると、routes.yaml ファイルを使用して簡単なルートを定義できます。 例えば、次のようにapex ドメインからwww サブドメインにリダイレクトできます。

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

部分ルートリダイレクト

.magento/routes.yaml ファイルでは、パターン一致に基づいて、既存のルートに部分的なリダイレクト ルールを追加できます。

http://{default}/:
    redirects:
        expires: 1d
        paths:
          "/from": { to: "http://example.com/" }
          "/regexp/(.*)/matching": { to: "http://example.com/$1", regexp: true }

部分リダイレクトは、アプリケーションが直接提供するルートを含む、あらゆるタイプのルートで機能します。

次の2つのキーをredirectsで使用できます。

  • 有効期限 – オプション。ブラウザーでリダイレクトをキャッシュする時間を指定します。 有効な値の例には、3600s1d2w3mなどがあります。

  • paths – 部分ルート リダイレクト ルールの設定を指定する1つ以上のキーと値のペア。

    各リダイレクトルールのキーは、リダイレクト用のリクエストパスをフィルタリングするための式です。 値は、リダイレクトのターゲット先とリダイレクトを処理するためのオプションを指定するオブジェクトです。

    value オブジェクトには、次のプロパティがあります。

    table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2
    プロパティ 説明
    to 必須、部分的な絶対パス、プロトコルとホストを含むURL、またはリダイレクトルールのターゲット先を指定するパターン。
    regexp オプションで、デフォルトはfalseです。 パス キーをPCRE正規表現として解釈するかどうかを指定します。
    prefix リダイレクトがパスとそのすべての子の両方に適用されるか、パス自体のみに適用されるかを指定します。 デフォルトはtrueです。 この値は、regexptrueの場合はサポートされていません。
    append_suffix 接尾辞がリダイレクトに引き継がれるかどうかを指定します。 デフォルトはtrueです。 この値は、regexp キーがtrueの場合はサポートされません。また、prefix キーがfalseの場合は*サポートされません。
    code HTTP ステータスコードを指定します。 有効な状態コードは301 (永続的に移動) ​302307、および308です。 デフォルトは302です。
    expires オプションで、ブラウザーでリダイレクトをキャッシュする時間を指定します。 デフォルトはredirects キーの直下に定義されたexpires値ですが、このレベルでは、個々の部分リダイレクトのキャッシュ有効期限を微調整できます。

一部ルートリダイレクトの例

次の例は、様々なpaths設定オプションを使用して、routes.yaml ファイルで部分ルートリダイレクトを指定する方法を示しています。

正規表現パターンマッチング

次の形式を使用して、正規表現に基づいてリダイレクトリクエストを設定します。

http://{default}/:
    type: upstream
    redirects:
      paths:
        "/regexp/(.*)/match": { to: "http://example.com/$1", regexp: true }

この設定では、正規表現に対してリクエストパスをフィルタリングし、一致するリクエストをhttps://example.comにリダイレクトします。 例えば、https://example.com/regexp/a/b/c/matchへのリクエストはhttps://example.com/a/b/cにリダイレクトされます。

接頭辞パターンマッチング

指定された接頭辞パターンで始まるパスのリダイレクトリクエストを設定するには、次の形式を使用します。

http://{default}/:
    type: upstream
    redirects:
      paths:
        "/from": { to: "https://{default}/to", prefix: true }

この設定は次のように機能します。

  • パターン /fromに一致するリクエストをパス http://{default}/toにリダイレクトします。

  • パターン /from/another/pathに一致するリクエストをhttps://{default}/to/another/pathにリダイレクトします。

  • prefix プロパティをfalseに変更すると、/from パターントリガーに一致するリクエストはリダイレクトとなりますが、/from/another/path パターンに一致するリクエストはリダイレクトされません。

接尾辞パターンマッチング

次の形式を使用して、リクエストからターゲット宛先にパスのサフィックスを追加するリダイレクトリクエストを設定します。

http://{default}/:
    type: upstream
    redirects:
      paths: "/from": { to: "https://{default}/to", append_suffix: false }

この設定は次のように機能します。

  • パターン /from/path/suffixに一致するリクエストをパス https://{default}/toにリダイレクトします。

  • append_suffix プロパティをtrueに変更すると、/from/path/suffixに一致するリクエストはパス https://{default}/to/path/suffixにリダイレクトされます。

パス固有のキャッシュ設定

特定のパスからリダイレクトをキャッシュする時間をカスタマイズするには、次の形式を使用します。

http://{default}/:
    type: upstream
    redirects:
    expires: 1d
      paths:
        "/from": { to: "https://example.com/" }
        "/here": { to: "https://example.com/there", expires: "2w" }

この設定は次のように機能します。

  • 最初のパス (/from)からのリダイレクトは1日キャッシュされます。

  • 2番目のパス (/here)からのリダイレクトは2週間キャッシュされます。

recommendation-more-help
commerce-on-cloud-help-cloud-guide