エラーページのカスタマイズ customizing-error-pages
AEM には、HTTP エラーを処理するための標準的なエラーハンドラーが付属しています。例えば、次のようなメッセージが表示されます。
エラーに応答するために、AEM では /libs/sling/servlet/errorhandler
の下に 404.jsp
スクリプトが用意されています。
エラーハンドラーで表示されるページのカスタマイズ方法 how-to-customize-pages-shown-by-the-error-handler
独自のスクリプトを作成して、エラーの発生時にエラーハンドラーで表示されるページをカスタマイズできます。それには、AEM の標準的なオーバーレイメカニズムを利用して、カスタマイズしたページが /apps
下に作成され、/libs
下のデフォルトページをオーバーレイするようにします。
-
リポジトリー内で、デフォルトスクリプトを次のようにコピーします。
- コピー元:
/libs/sling/servlet/errorhandler/
- コピー先:
/apps/sling/servlet/errorhandler/
コピー先のパスはデフォルトでは存在しないので、この操作を初めて行う際は作成する必要があります。
- コピー元:
-
/apps/sling/servlet/errorhandler
に移動します。次のどちらかを実行します。- 該当する既存のスクリプトを編集し、必要な情報を追加します。または
- 必要なコードの新しいスクリプトを作成および編集します。
-
変更を保存し、テストします。
404.jsp
スクリプトは、AEM 認証に合わせて設計されています。特に、これらのエラーの発生時にシステムログインができるようになっています。HTTP 500 エラーへの応答のカスタマイズ customizing-the-response-to-http-errors
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
を作成します。
x-aem-error-pass: true
というヘッダーを追加する必要があります。これは、AEM または Apache/Dispatcher レイヤーからの応答に対してのみ機能します。中間のインフラストラクチャレイヤーから発生したその他の予期しないエラーの場合もやはり、汎用のエラーページが表示されます。