帶AEM有處理HTTP錯誤的標準錯誤處理程式;例如,通過顯示:
要響應錯誤,AEM請提供 404.jsp
指令碼 /libs/sling/servlet/errorhandler
。
因AEM為基於Apache Sling,有更多資訊 中。
在作者案中, CQ WCM調試篩選器 預設情況下啟用。 這始終導致響應代碼200。 預設錯誤處理程式通過將完整堆棧跟蹤寫入響應來響應。
在發佈實例上,CQ WCM調試篩選器為 總是 已禁用(即使配置為已啟用)。
您可以開發自己的指令碼,以便在遇到錯誤時自定義錯誤處理程式顯示的頁。 為此,您將利用 AEM標準覆蓋機構 以便在 /apps
並覆蓋下面的預設頁面 /libs
。
在儲存庫中,複製預設指令碼:
/libs/sling/servlet/errorhandler/
/apps/sling/servlet/errorhandler/
預設情況下,目標路徑不存在,因此您需要在首次執行此操作時建立它。
導航到 /apps/sling/servlet/errorhandler
. 在此,您可以:
保存更改和test。
的 404.jsp
指令碼是專門設計來滿足驗證AEM的;特別是,在出現這些錯誤時允許系統登錄。
因此,更換這個劇本應該非常小心。
HTTP 500內部伺服器錯誤 指示伺服器端錯誤,如伺服器遇到意外情況,導致無法完成請求。
當請求處理導致異常時,Apache Sling框架(基於AEM此框架構建):
按 自定義錯誤處理程式顯示的頁 a 500.jsp
可以建立指令碼。 但是,僅當 HttpServletResponse.sendError(500)
明確執行;也就是從例外捕手那裡。
否則,響應代碼設定為500,但 500.jsp
指令碼未執行。
要處理500個錯誤,錯誤處理程式指令碼的檔案名必須與異常類(或超類)相同。 要處理所有此類異常,可以建立指令碼 /apps/sling/servlet/errorhandler/Throwable.jsp
或 /apps/sling/servlet/errorhandler/Exception.jsp
。
在作者案中, CQ WCM調試篩選器 預設情況下啟用。 這始終導致響應代碼200。 預設錯誤處理程式通過將完整堆棧跟蹤寫入響應來響應。
對於自定義錯誤處理程式,需要代碼為500的響應 — 因此 需要禁用CQ WCM調試篩選器。 這確保返迴響應代碼500,這反過來觸發正確的Sling錯誤處理程式。
在發佈實例上,CQ WCM調試篩選器為 總是 已禁用(即使配置為已啟用)。