Adobe Experience Manager(AEM) には、HTTP エラーを処理するための標準的なエラーハンドラーが付属しています。例えば、次のエラーを示します。
エラーコードに応答するシステム提供のスクリプトが(/libs/sling/servlet/errorhandler
の下に)あります。標準の CQ インスタンスでは、デフォルトで次のスクリプトを使用できます。
AEMは Apache Sling に基づいています。 そのため、 エラー処理 を参照してください。
オーサーインスタンスでは、 CQ WCM Debug Filter はデフォルトで有効になっています。 これにより、常に応答コード 200 が生成されます。 デフォルトのエラーハンドラーは、応答に完全なスタックトレースを書き込むことで応答します。
パブリッシュインスタンスでは、CQ WCM Debug Filter は次のようになります。 常に 無効(有効に設定されている場合も含む)
独自のスクリプトを作成して、エラーの発生時にエラーハンドラーで表示されるページをカスタマイズできます。カスタマイズしたページは、の下に作成されます。 /apps
デフォルトのページ ( /libs
) をクリックします。
詳しくは、 オーバーレイの使用 を参照してください。
リポジトリで、デフォルトのスクリプトをコピーします。
/libs/sling/servlet/errorhandler/
/apps/sling/servlet/errorhandler/
デフォルトでは宛先パスは存在しないので、初めてこの処理を行う際に作成する必要があります。
に移動します。 /apps/sling/servlet/errorhandler
次のいずれかの操作を行います。
変更を保存し、テストします。
404.jsp および 403.jsp ハンドラーは、CQ5 認証に対応するように設計されています。特に、これらのエラーが発生した場合にシステムログインを許可するためです。
したがって、これら 2 つのハンドラーの交換は慎重に行う必要があります。
HTTP 500 エラーはサーバー側の例外が原因で発生します。
リクエストの処理で例外が発生した場合、Apache Sling フレームワーク(AEM の基盤)は次の処理を実行します。
例外をログに記録します。
戻り値:
応答の本文に含まれます。
エラーハンドラーで表示されるページをカスタマイズすることで、500.jsp
スクリプトを作成できます。ただし、次の場合にのみ使用されます。 HttpServletResponse.sendError(500)
が明示的に実行されます。つまり、例外キャッチャーから実行されます。
それ以外の場合は、応答コードは 500 に設定されますが、500.jsp
スクリプトは実行されません。
500 エラーを処理するには、エラーハンドラースクリプトのファイル名を例外クラス(またはスーパークラス)と同じにする必要があります。このような例外をすべて処理するには、スクリプトを作成します /apps/sling/servlet/errorhandler/Throwable.js
p または /apps/sling/servlet/errorhandler/Exception.jsp
.
オーサーインスタンスでは、 CQ WCM Debug Filter はデフォルトで有効になっています。 これにより、常に応答コード 200 が生成されます。 デフォルトのエラーハンドラーは、応答に完全なスタックトレースを書き込むことで応答します。
カスタムのエラーハンドラーの場合、コード 500 を含む応答が必要なので、 CQ WCM Debug Filter を無効にする必要があります. これにより、応答コード 500 が返され、その結果、正しい Sling error-handler がトリガーされます。
パブリッシュインスタンスでは、CQ WCM Debug Filter は次のようになります。 常に 無効(有効に設定されている場合も含む)