エラーハンドラーによって表示されるページのカスタマイズ

Adobe Experience Manager(AEM) には、HTTP エラーを処理するための標準的なエラーハンドラーが付属しています。例えば、次のエラーを示します。

chlimage_1-67

エラーコードに応答するシステム提供のスクリプトが(/libs/sling/servlet/errorhandler の下に)あります。標準の CQ インスタンスでは、デフォルトで次のスクリプトを使用できます。

  • 403.jsp
  • 404.jsp
メモ

AEMは Apache Sling に基づいています。 そのため、 エラー処理 を参照してください。

メモ

オーサーインスタンスでは、 CQ WCM Debug Filter はデフォルトで有効になっています。 これにより、常に応答コード 200 が生成されます。 デフォルトのエラーハンドラーは、応答に完全なスタックトレースを書き込むことで応答します。

パブリッシュインスタンスでは、CQ WCM Debug Filter は次のようになります。 常に 無効(有効に設定されている場合も含む)

エラーハンドラーによって表示されるページをカスタマイズする方法

独自のスクリプトを作成して、エラーの発生時にエラーハンドラーで表示されるページをカスタマイズできます。カスタマイズしたページは、の下に作成されます。 /apps デフォルトのページ ( /libs) をクリックします。

メモ

詳しくは、 オーバーレイの使用 を参照してください。

  1. リポジトリで、デフォルトのスクリプトをコピーします。

    • コピー元:/libs/sling/servlet/errorhandler/
    • コピー先:/apps/sling/servlet/errorhandler/

    デフォルトでは宛先パスは存在しないので、初めてこの処理を行う際に作成する必要があります。

  2. に移動します。 /apps/sling/servlet/errorhandler 次のいずれかの操作を行います。

    • 必要な情報を指定できるように、適切な既存のスクリプトを編集します。
    • 必要なコードの新しいスクリプトを作成および編集します。
  3. 変更を保存し、テストします。

注意

404.jsp および 403.jsp ハンドラーは、CQ5 認証に対応するように設計されています。特に、これらのエラーが発生した場合にシステムログインを許可するためです。

したがって、これら 2 つのハンドラーの交換は慎重に行う必要があります。

HTTP 500 エラーへの応答のカスタマイズ

HTTP 500 エラーはサーバー側の例外が原因で発生します。

リクエストの処理で例外が発生した場合、Apache Sling フレームワーク(AEM の基盤)は次の処理を実行します。

  • 例外をログに記録します。

  • 戻り値:

    • HTTP 応答コード 500
    • 例外スタックトレース

    応答の本文に含まれます。

エラーハンドラーで表示されるページをカスタマイズすることで、500.jsp スクリプトを作成できます。ただし、次の場合にのみ使用されます。 HttpServletResponse.sendError(500) が明示的に実行されます。つまり、例外キャッチャーから実行されます。

それ以外の場合は、応答コードは 500 に設定されますが、500.jsp スクリプトは実行されません。

500 エラーを処理するには、エラーハンドラースクリプトのファイル名を例外クラス(またはスーパークラス)と同じにする必要があります。このような例外をすべて処理するには、スクリプトを作成します /apps/sling/servlet/errorhandler/Throwable.jsp または /apps/sling/servlet/errorhandler/Exception.jsp.

注意

オーサーインスタンスでは、 CQ WCM Debug Filter はデフォルトで有効になっています。 これにより、常に応答コード 200 が生成されます。 デフォルトのエラーハンドラーは、応答に完全なスタックトレースを書き込むことで応答します。

カスタムのエラーハンドラーの場合、コード 500 を含む応答が必要なので、 CQ WCM Debug Filter を無効にする必要があります. これにより、応答コード 500 が返され、その結果、正しい Sling error-handler がトリガーされます。

パブリッシュインスタンスでは、CQ WCM Debug Filter は次のようになります。 常に 無効(有効に設定されている場合も含む)

このページ