Páginas de erro personalizadas
Saiba como implementar páginas de erro personalizadas para seu site hospedado pela AEM as a Cloud Service.
Neste tutorial, você aprenderá:
-
Páginas de erro padrão
-
De onde as páginas de erro são servidas
- Tipo de serviço AEM - autor, publicação, visualização
- CDN gerenciada por Adobe
-
Opções para personalizar páginas de erro
- Diretiva Apache ErrorDocument
- ACS AEM Commons - Error Page Handler
- Páginas de erro da CDN
Páginas de erro padrão
Vamos analisar quando as páginas de erro são exibidas, as páginas de erro padrão e de onde elas são fornecidas.
Páginas de erro são exibidas quando:
- a página não existe (404)
- não autorizado a acessar uma página (403)
- erro do servidor (500) devido a problemas de código ou o servidor está inacessível.
A AEM as a Cloud Service fornece páginas de erro padrão para os cenários acima. É uma página genérica e não corresponde à sua marca.
A página de erro padrão é servida do tipo de serviço AEM(autor, publicação, visualização) ou da CDN gerenciada por Adobe. Consulte a tabela abaixo para obter mais detalhes.
Por exemplo, as páginas de erro padrão veiculadas pelo tipo de serviço AEM e pelo CDN gerenciado por Adobe são as seguintes:
No entanto, você pode personalizar o tipo de serviço do AEM e as páginas de erro da CDN gerenciadas por Adobe para corresponder à sua marca e fornecer uma melhor experiência ao usuário.
Opções para personalizar páginas de erro
As seguintes opções estão disponíveis para personalizar páginas de erro:
Pré-requisitos
Neste tutorial, você aprenderá a personalizar páginas de erro usando a diretiva ErrorDocument, o Manipulador de página de erro AEM ACS e as Páginas de erro CDN. Para seguir este tutorial, você precisa:
-
O ambiente de desenvolvimento local do AEM ou o ambiente do AEM as a Cloud Service. A opção Páginas de Erro de CDN é aplicável ao ambiente do AEM as a Cloud Service.
-
O projeto WKND AEM para personalizar páginas de erro.
Configuração
-
Clonar e implantar o projeto AEM WKND no ambiente de desenvolvimento local do AEM seguindo as etapas abaixo:
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
-
Para o ambiente do AEM as a Cloud Service, implante o projeto WKND AEM executando o pipeline de pilha completa. Consulte o exemplo de pipeline de não produção.
-
Verifique se as páginas do site WKND são renderizadas corretamente.
Diretiva do Apache ErrorDocument para personalizar páginas de erro fornecidas por AEM errordocument
Para personalizar páginas de erro veiculadas por AEM, use a diretiva do Apache ErrorDocument
.
No AEM as a Cloud Service, a opção de diretiva do Apache ErrorDocument
só é aplicável aos tipos de serviço de publicação e visualização. Não é aplicável ao tipo de serviço do autor, pois o Apache + Dispatcher não faz parte da arquitetura de implantação.
Vamos analisar como o projeto AEM WKND usa a diretiva do Apache ErrorDocument
para exibir páginas de erro personalizadas.
-
O módulo
ui.content.sample
contém as páginas de erro @/content/wknd/language-masters/en/errors
da marca. Revise-as no seu ambiente AEM local ou AEM as a Cloud Servicehttps://author-p<ID>-e<ID>.adobeaemcloud.com/ui#/aem/sites.html/content/wknd/language-masters/en/errors
. -
O arquivo
wknd.vhost
do módulodispatcher
contém:- A diretiva ErrorDocument que aponta para as páginas de erro acima.
- O valor DispatcherPassError está definido como 1 para que o Dispatcher permita que o Apache manipule todos os erros.
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 ...
-
Revise as páginas de erro personalizadas do site WKND inserindo um nome de página ou caminho incorreto no seu ambiente, por exemplo https://publish-p105881-e991000.adobeaemcloud.com/us/en/foo/bar.html.
ACS AEM Commons-Error Page Handler para personalizar páginas de erro fornecidas pelo AEM acs-aem-commons
Para personalizar as páginas de erro do AEM em todos os tipos de serviço do AEM, você pode usar a opção Manipulador de página de erro do AcS AEM Commons.
. Para obter instruções detalhadas passo a passo, consulte a seção Como Usar.
Páginas de erro CDN para personalizar páginas de erro fornecidas pela CDN cdn-error-pages
Para personalizar páginas de erro fornecidas pelo CDN gerenciado por Adobe, use a opção de páginas de erro do CDN.
Vamos implementar páginas de erro de CDN para personalizar páginas de erro quando o CDN gerenciado por Adobe não puder alcançar o tipo de serviço AEM (servidor de origem).
As etapas de alto nível para implementar páginas de erro de CDN são:
- Desenvolva um conteúdo de página de erro personalizado como um Aplicativo de página única (SPA).
- Hospede os arquivos estáticos necessários para a página de erro do CDN em um local acessível publicamente.
- Configure a regra CDN (errorPages) e faça referência aos arquivos estáticos acima.
- Implante a regra CDN configurada no ambiente do AEM as a Cloud Service usando o pipeline do Cloud Manager.
- Teste as páginas de erro do CDN.
Visão geral das páginas de erro do CDN
A página de erro CDN é implementada como um aplicativo de página única (SPA) pelo CDN gerenciado por Adobe. O documento de HTML do SPA entregue pelo CDN gerenciado por Adobe contém o trecho de HTML mínimo. O conteúdo da página de erro personalizada é gerado dinamicamente usando um arquivo JavaScript. O arquivo JavaScript deve ser desenvolvido e hospedado em um local acessível publicamente pelo cliente.
O snippet de HTML entregue pelo CDN gerenciado por Adobe tem a seguinte estrutura:
<!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>
O trecho HTML contém os seguintes espaços reservados:
- jsUrl: o URL absoluto do arquivo JavaScript para renderizar o conteúdo da página de erro, criando elementos HTML dinamicamente.
- cssUrl: a URL absoluta do arquivo CSS para o estilo do conteúdo da página de erro.
- icoUrl: a URL absoluta do favicon.
Desenvolver uma página de erro personalizada
Vamos desenvolver o conteúdo específico da página de erro de marca WKND como um Aplicativo de página única (SPA).
Para fins de demonstração, vamos usar o React. No entanto, você pode usar qualquer estrutura ou biblioteca do JavaScript.
-
Crie um novo projeto React executando o seguinte comando:
code language-none $ npx create-react-app aem-cdn-error-page
-
Abra o projeto em seu editor de código favorito e atualize os arquivos abaixo:
-
src/App.js
: é o componente principal que renderiza o conteúdo da página de erro.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
: Estilo do conteúdo da página de erro.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; }
-
Adicionar o arquivo
wknd-logo.png
à pastasrc
. Copie o arquivo comowknd-logo.png
. -
Adicionar o arquivo
favicon.ico
à pastapublic
. Copie o arquivo comofavicon.ico
. -
Verifique o conteúdo da página de erro CDN com marca WKND executando o projeto:
code language-none $ npm start
Abra o navegador e navegue até
http://localhost:3000/
para ver o conteúdo da página de erro CDN. -
Crie o projeto para gerar os arquivos estáticos:
code language-none $ npm run build
Os arquivos estáticos são gerados na pasta
build
.
-
Como alternativa, você pode baixar o arquivo aem-cdn-error-page.zip que contém os arquivos de projeto do React acima.
Em seguida, hospede os arquivos estáticos acima em um local acessível publicamente.
Arquivos estáticos de host necessários para a página de erro CDN
Vamos hospedar os arquivos estáticos no Armazenamento de blobs do Azure. No entanto, você pode usar qualquer serviço de hospedagem de arquivos estáticos, como Netlify, Vercel ou AWS S3.
-
Siga a documentação oficial do Armazenamento Azure Blob para criar um contêiner e carregar os arquivos estáticos.
note important IMPORTANT Se você estiver usando outros serviços de hospedagem de arquivos estáticos, siga a documentação deles para hospedar os arquivos estáticos. -
Verifique se os arquivos estáticos estão acessíveis publicamente. Minhas configurações de conta de armazenamento específicas de demonstração WKND são as seguintes:
- Nome da Conta de Armazenamento:
aemcdnerrorpageresources
- Nome do Contêiner:
static-files
- Nome da Conta de Armazenamento:
-
No contêiner acima
static-files
, abaixo, os arquivos da pastabuild
são carregados:error.js
: O arquivobuild/static/js/main.<hash>.js
foi renomeado paraerror.js
e publicamente acessível.error.css
: O arquivobuild/static/css/main.<hash>.css
foi renomeado paraerror.css
e publicamente acessível.favicon.ico
: O arquivobuild/favicon.ico
é carregado como está e está acessível publicamente.
Em seguida, configure a regra CDN (errorPages) e faça referência aos arquivos estáticos acima.
Configurar a regra CDN
Vamos configurar a regra de CDN errorPages
que usa os arquivos estáticos acima para renderizar o conteúdo da página de erro de CDN.
-
Abra o arquivo
cdn.yaml
na pastaconfig
principal do seu projeto AEM. Por exemplo, o arquivo cdn.yaml🔗 do projeto WKND. -
Adicionar a seguinte regra CDN ao arquivo
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
-
Salve, confirme e envie as alterações para o repositório upstream de Adobe.
Implantar a regra CDN
Por fim, implante a regra CDN configurada no ambiente do AEM as a Cloud Service usando o pipeline do Cloud Manager.
-
Na Cloud Manager, navegue até a seção Pipelines.
-
Crie um novo pipeline ou selecione o pipeline existente que implanta apenas os arquivos Config. Para obter etapas detalhadas, consulte Criar um pipeline de configuração.
-
Clique no botão Executar para implantar a regra CDN.
Testar as páginas de erro do CDN
Para testar as páginas de erro do CDN, siga as etapas abaixo:
-
Abra o navegador e navegue até a URL de ambiente Publish, anexe o
cdnstatus?code=404
à URL, por exemplo, https://publish-p105881-e991000.adobeaemcloud.com/cdnstatus?code=404, ou acesse usando a URL de domínio personalizado -
Os códigos compatíveis são: 403, 404, 406, 500 e 503.
-
Verifique a guia de rede do navegador para ver se os arquivos estáticos são carregados do Armazenamento de Blobs do Azure. O documento HTML entregue pelo CDN gerenciado por Adobe contém o conteúdo mínimo básico e o arquivo JavaScript cria dinamicamente o conteúdo da página de erro de marca.
Resumo
Neste tutorial, você aprendeu sobre as páginas de erro padrão, de onde as páginas de erro são fornecidas, e sobre as opções para personalizar páginas de erro. Você aprendeu a implementar páginas de erro personalizadas usando a diretiva do Apache ErrorDocument
, as opções ACS AEM Commons Error Page Handler
e CDN Error Pages
.