カスタムエラーページ

AEM as a Cloud Service でホストされる web サイトにカスタムエラーページを実装する方法について説明します。

このチュートリアルでは、次の内容について説明します。

  • デフォルトのエラーページ

  • エラーページの提供元

    • AEM サービスタイプ - オーサー、パブリッシュ、プレビュー
    • アドビが管理する CDN
  • エラーページをカスタマイズするためのオプション

    • ErrorDocument Apache ディレクティブ
    • ACS AEM Commons - エラーページハンドラー
    • CDN エラーページ

デフォルトのエラーページ

エラーページが表示されるタイミング、デフォルトのエラーページ、およびエラーページの提供元を確認しましょう。

エラーページは、次の場合に表示されます。

  • ページが存在しない(404)
  • ページへのアクセスが承認されていない(403)
  • コードの問題またはサーバーに到達できないので、サーバーエラーが発生する(500).

AEM as a Cloud Service では、上記のシナリオに対して​ デフォルトのエラーページ ​が提供されます。これは汎用のページで、ブランドと一致しません。

デフォルトのエラーページは、AEM サービスタイプ(オーサー、パブリッシュ、プレビュー)または​ アドビが管理する CDN から​ 提供されます。詳しくは、次の表を参照してください。

エラーページの提供元
詳細
AEM サービスタイプ - オーサー、パブリッシュ、プレビュー
ページリクエストが AEM サービスタイプによって処理され、上記のいずれかのエラーシナリオが発生すると、AEM サービスタイプからエラーページが提供されます。
アドビが管理する CDN
アドビが管理する CDN が AEM サービスタイプ(接触チャネルサーバー)に到達できない ​場合、エラーページはアドビが管理する CDNから提供されます。可能性が低いイベントですが、計画する価値はあります。

例えば、AEM サービスタイプとアドビが管理する CDN から提供されるデフォルトのエラーページは次のとおりです。

デフォルトの AEM エラーページ

ただし、AEM サービスタイプとアドビが管理する CDN エラーページの両方をカスタマイズ ​して、ブランドに一致させて、より優れたユーザーエクスペリエンスを提供できます。

エラーページをカスタマイズするためのオプション

エラーページをカスタマイズするには、次のオプションを使用できます。

適用先
オプション名
説明
AEM サービスタイプ - パブリッシュとプレビュー
ErrorDocument ディレクティブ
カスタムエラーページへのパスを指定するには、Apache 設定ファイルの ErrorDocument ディレクティブを使用します。AEM サービスタイプ(パブリッシュとプレビュー)にのみ適用されます。
AEM サービスタイプ – オーサー、パブリッシュ、プレビュー
ACS AEM Commons エラーページハンドラー
ACS AEM Commons エラーページハンドラーを使用して、すべての AEM サービスタイプでエラーをカスタマイズします。
アドビが管理する CDN
CDN エラーページ
CDN エラーページを使用して、アドビが管理する CDN が AEM サービスタイプ(接触チャネルサーバー)に到達できない場合のエラーページをカスタマイズします。

前提条件

このチュートリアルでは、ErrorDocument ディレクティブ、ACS AEM Commons エラーページハンドラー ​および CDN エラーページ ​オプションを使用して、エラーページをカスタマイズする方法について説明します。このチュートリアルに従うには、以下が必要です。

設定

  • AEM WKND プロジェクトのクローンを作成し、ローカル AEM 開発環境にデプロイするには、次の手順に従います。

    code language-none
    # For local AEM development environment
    $ git clone git@github.com:adobe/aem-guides-wknd.git
    $ cd aem-guides-wknd
    $ mvn clean install -PautoInstallSinglePackage -PautoInstallSinglePackagePublish
    
  • AEM as a Cloud Service 環境の場合、フルスタックパイプラインを実行して AEM WKND プロジェクトをデプロイします。実稼動以外のパイプラインの例を参照してください。

  • WKND サイトページが正しくレンダリングされていることを確認します。

AEM が提供するエラーページをカスタマイズするための ErrorDocument Apache ディレクティブ errordocument

AEM が提供するエラーページをカスタマイズするには、ErrorDocument Apache ディレクティブを使用します。

AEM as a Cloud Service では、ErrorDocument Apache ディレクティブオプションは、パブリッシュおよびプレビューサービスタイプにのみ適用されます。Apache と Dispatcher はデプロイメントアーキテクチャの一部ではないので、オーサーサービスタイプには適用されません。

AEM WKND プロジェクトで ErrorDocument Apache ディレクティブを使用してカスタムエラーページを表示する方法を確認しましょう。

  • ui.content.sample モジュールには、ブランドのエラーページ @ /content/wknd/language-masters/en/errors が含まれます。ローカルの AEM または AEM as a Cloud Service https://author-p<ID>-e<ID>.adobeaemcloud.com/ui#/aem/sites.html/content/wknd/language-masters/en/errors 環境で確認します。

  • dispatcher モジュールの wknd.vhost ファイルには次の内容が含まれます。

    code language-none
    ...
    # ErrorDocument directive in wknd.vhost file
    ErrorDocument 404 ${404_PAGE}
    ErrorDocument 500 ${500_PAGE}
    ErrorDocument 502 ${500_PAGE}
    ErrorDocument 503 ${500_PAGE}
    ErrorDocument 504 ${500_PAGE}
    
    ...
    # DispatcherPassError value in wknd.vhost file
    <IfModule disp_apache2.c>
        ...
        DispatcherPassError        1
    </IfModule>
    
    # Custom error pages path in custom.vars file
    Define 404_PAGE /content/wknd/us/en/errors/404.html
    Define 500_PAGE /content/wknd/us/en/errors/500.html
    ...
    
  • お使いの環境に正しくないページ名またはパス(例:https://publish-p105881-e991000.adobeaemcloud.com/us/en/foo/bar.html)を入力して、WKND サイトのカスタムエラーページを確認します。

AEM が提供するエラーページをカスタマイズするための ACS AEM Commons エラーページハンドラー acs-aem-commons

すべての AEM サービスタイプ ​で AEM が提供するエラーページをカスタマイズするには、ACS AEM Commons エラーページハンドラーオプションを使用できます。

。詳細な手順については、使用方法の節を参照してください。

CDN が提供するエラーページをカスタマイズするための CDN エラーページ cdn-error-pages

アドビが管理する CDN によって提供されるエラーページをカスタマイズするには、CDN エラーページ オプションを使用します。

CDN エラーページを実装して、アドビが管理する CDN が AEM サービスタイプ(接触チャネルサーバー)に到達できない場合のエラーページをカスタマイズしましょう。

IMPORTANT
アドビが管理する CDN が AEM サービスタイプ(接触チャネルサーバー)に到達できない ​ことは​ 可能性が低いイベント ​ですが、計画する価値はあります。

CDN エラーページを実装する大まかな手順は次のとおりです。

  • カスタムエラーページコンテンツを単一ページアプリケーション(SPA)として開発します。
  • CDN エラーページに必要な静的ファイルを、パブリックアクセス可能な場所にホストします。
  • CDN ルール(errorPages)を設定し、上記の静的ファイルを参照します。
  • Cloud Manager パイプラインを使用して、設定済みの CDN ルールを AEM as a Cloud Service 環境にデプロイします。
  • CDN エラーページをテストします。

CDN エラーページの概要

CDN エラーページは、アドビが管理する CDN によって単一ページアプリケーション(SPA)として実装されます。アドビが管理する CDN によって配信される SPA HTML ドキュメントには、最小限の HTML スニペットが含まれます。カスタムエラーページのコンテンツは、JavaScript ファイルを使用して動的に生成されます。JavaScript ファイルは、お客様がパブリックアクセス可能な場所で開発およびホストする必要があります。

アドビが管理する CDN によって配信される HTML スニペットの構造は次のとおりです。

<!DOCTYPE html>
<html lang="en">
  <head>

    ...

    <title>{title}</title>
    <link rel="icon" href="{icoUrl}">
    <link rel="stylesheet" href="{cssUrl}">
  </head>
  <body>
    <script src="{jsUrl}"></script>
  </body>
</html>

HTMLスニペットには、次のプレースホルダーが含まれます。

  1. jsUrl:HTML 要素を動的に作成してエラーページのコンテンツをレンダリングする JavaScript ファイルの絶対 URL。
  2. cssUrl:エラーページのコンテンツのスタイルを設定する CSS ファイルの絶対 URL。
  3. icoUrl:favicon の絶対 URL。

カスタムエラーページの開発

WKND 固有のブランドのエラーページのコンテンツを単一ページアプリケーション(SPA)として開発しましょう。

デモの目的で、React を使用しますが、任意の JavaScript フレームワークやライブラリを使用できます。

  • 次のコマンドを実行して、新しい React プロジェクトを作成します。

    code language-none
    $ npx create-react-app aem-cdn-error-page
    
  • お気に入りのコードエディターでプロジェクトを開き、以下のファイルを更新します。

    • src/App.js:エラーページのコンテンツをレンダリングするメインコンポーネントです。

      code language-javascript
      import logo from "./wknd-logo.png";
      import "./App.css";
      
      function App() {
        return (
          <>
            <div className="App">
              <div className="container">
              <img src={logo} className="App-logo" alt="logo" />
              </div>
            </div>
            <div className="container">
              <div className="error-code">CDN Error Page</div>
              <h1 className="error-message">Ruh-Roh! Page Not Found</h1>
              <p className="error-description">
                We're sorry, we are unable to fetch this page!
              </p>
            </div>
          </>
        );
      }
      
      export default App;
      
    • src/App.css:エラーページのコンテンツのスタイルを設定します。

      code language-css
      .App {
        text-align: left;
      }
      
      .App-logo {
        height: 14vmin;
        pointer-events: none;
      }
      
      
      body {
        margin-top: 0;
        padding: 0;
        font-family: Arial, sans-serif;
        background-color: #fff;
        color: #333;
        display: flex;
        justify-content: center;
        align-items: center;
      }
      
      .container {
        text-align: letf;
        padding-top: 10px;
      }
      
      .error-code {
        font-size: 4rem;
        font-weight: bold;
        color: #ff6b6b;
      }
      
      .error-message {
        font-size: 2.5rem;
        margin-bottom: 10px;
      }
      
      .error-description {
        font-size: 1rem;
        margin-bottom: 20px;
      }
      
    • wknd-logo.png ファイルを src フォルダーに追加します。ファイルwknd-logo.png としてコピーします。

    • favicon.ico ファイルを public フォルダーに追加します。ファイルfavicon.ico としてコピーします。

    • プロジェクトを実行して、WKND ブランドの CDN エラーページのコンテンツを確認します。

      code language-none
      $ npm start
      

      ブラウザーを開き、http://localhost:3000/ に移動して、CDN エラー ページのコンテンツを確認します。

    • 静的ファイルを生成するプロジェクトを作成します。

      code language-none
      $ npm run build
      

      静的ファイルは、build フォルダーに生成されます。

または、上記の React プロジェクトファイルを含む aem-cdn-error-page.zip ファイルをダウンロードすることもできます。

次に、上記の静的ファイルをパブリックアクセス可能な場所にホストします。

CDN エラーページに必要な静的ファイルのホスト

Azure Blob Storage で静的ファイルをホストしましょう。ただし、NetlifyVercelAWS S3 などの静的ファイルホスティングサービスを使用できます。

  • コンテナーを作成し、静的ファイルをアップロードするには、公式の Azure Blob Storage ドキュメントに従います。

    note important
    IMPORTANT
    他の静的ファイルホスティングサービスを使用している場合は、静的ファイルをホストするためのドキュメントに従います。
  • 静的ファイルがパブリックアクセス可能であることを確認します。WKND デモ固有のストレージアカウント設定は、次のとおりです。

    • ストレージアカウント名aemcdnerrorpageresources
    • コンテナ名static-files

    Azure Blob Storage

  • 上記の static-files コンテナには、build フォルダーから以下のファイルがアップロードされます。

次に、CDN ルール(errorPages)を設定し、上記の静的ファイルを参照します。

CDN ルールの設定

上記の静的ファイルを使用して CDN エラーページのコンテンツをレンダリングする errorPages CDN ルールを設定しましょう。

  1. AEM プロジェクトのメイン config フォルダーから cdn.yaml ファイルを開きます。例えば、WKND プロジェクトの cdn.yaml ファイルです。

  2. 次の CDN ルールを cdn.yaml ファイルに追加します。

    code language-yaml
    kind: "CDN"
    version: "1"
    metadata:
      envTypes: ["dev", "stage", "prod"]
    data:
      # The CDN Error Page configuration.
      # The error page is displayed when the Adobe-managed CDN is unable to reach the origin server.
      # It is implemented as a Single Page Application (SPA) and WKND branded content must be generated dynamically using the JavaScript file
      errorPages:
        spa:
          title: Adobe AEM CDN Error Page # The title of the error page
          icoUrl: https://aemcdnerrorpageresources.blob.core.windows.net/static-files/favicon.ico # The PUBLIC URL of the favicon
          cssUrl: https://aemcdnerrorpageresources.blob.core.windows.net/static-files/error.css # The PUBLIC URL of the CSS file
          jsUrl: https://aemcdnerrorpageresources.blob.core.windows.net/static-files/error.js # The PUBLIC URL of the JavaScript file
    
  3. 変更を保存し、コミットして、Adobe アップストリームリポジトリにプッシュします。

CDN ルールのデプロイ

最後に、Cloud Manager パイプラインを使用して、設定済みの CDN ルールを AEM as a Cloud Service 環境にデプロイします。

  1. Cloud Manager で、「パイプライン」セクションに移動します。

  2. 新しいパイプラインを作成するか、設定 ​ファイルのみをデプロイする既存のパイプラインを選択します。手順について詳しくは、設定パイプラインの作成を参照してください。

  3. 実行」ボタンをクリックして CDN ルールをデプロイします。

CDN ルールのデプロイ

CDN エラーページのテスト

CDN エラーページをテストするには、次の手順に従います。

  • ブラウザーを開いてパブリッシュ環境の URL に移動し、URL に cdnstatus?code=404 を追加します(例:https://publish-p105881-e991000.adobeaemcloud.com/cdnstatus?code=404)。または、カスタムドメイン URL を使用してアクセスします。

    WKND - CDN エラーページ

  • サポートされているコードは、403、404、406、500 および 503 です。

  • ブラウザーのネットワークタブを確認して、静的ファイルが Azure Blob Storage から読み込まれていることを確認します。アドビが管理する CDN によって配信される HTML ドキュメントには最小限のコンテンツが含まれ、JavaScript ファイルによってブランドのエラーページのコンテンツが動的に作成されます。

    CDN エラーページのネットワークタブ

概要

このチュートリアルでは、エラーページの提供元となるデフォルトのエラーページと、エラーページをカスタマイズするオプションについて説明しました。ErrorDocument Apache ディレクティブ、ACS AEM Commons Error Page Handler、および CDN Error Pages オプションを使用してカスタムエラーページを実装する方法について説明しました。

その他のリソース

recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69