Redirecionamentos de URL sem pipeline pipeline-free-redirects
Por vários motivos, as organizações reescrevem URLs de uma maneira que causa um redirecionamento 301 (ou 302), o que significa que o navegador é redirecionado para uma página diferente.
Os cenários incluem:
- Uma página de HTML removida, de modo que o usuário é direcionado a uma página substituta (às vezes, a página inicial) em vez de ver um erro
404 Page Not Found
. - Uma página de HTML renomeada.
- Otimização de SEO.
A AEM as a Cloud Service oferece várias abordagens para implementar redirecionamentos do lado do cliente, mas a estratégia descrita neste artigo, redirecionamentos sem pipeline, é uma boa escolha quando:
- As pessoas que mantêm os redirecionamentos são usuários empresariais, que não têm o acesso necessário para confirmar alterações de arquivo no controle de origem ou a possibilidade de executar um pipeline de configuração no nível da Web do Cloud Manager.
- O número de redirecionamentos varia de alguns a dezenas de milhares.
- Você deseja a opção de uma interface de usuário, criada como um projeto personalizado ou usando o Gerenciador do Mapa de Redirecionamento do ACS Commons ou o Gerenciador de Redirecionamento do ACS Commons.
O núcleo desse recurso é a capacidade do AEM Apache/Dispatcher de carregar (ou recarregar) um ou mais arquivos de mapa de regravação que foram colocados em um local especificado no repositório de publicação (para que ele possa ser baixado da publicação do AEM). É importante mencionar que a forma como os arquivos chegam lá está fora do escopo desse recurso, mas você pode considerar um dos seguintes métodos:
- Assimilar o mapa de regravação como um ativo na interface do usuário do autor e publicá-lo.
- Instalando o ACS Commons Redirect Map Manager (pelo menos versão 6.7.0 ou superior), que inclui uma interface de usuário para gerenciar os mapeamentos de URL e também pode publicar o arquivo de mapa de regravação.
- Instalando o ACS Commons Redirect Manager (pelo menos versão 6.10.0 ou superior), que também inclui uma interface de usuário para gerenciar os mapeamentos de URL e pode publicar o arquivo de mapa de regravação.
- Flexibilidade total ao escrever um aplicativo personalizado. Por exemplo, uma interface de usuário ou de linha de comando para gerenciar os mapeamentos de URL ou, como alternativa, um formulário para carregar um mapa de regravação, que usa APIs AEM para publicar o arquivo de mapa de regravação.
O mapa de regravação rewrite-map
O mapa de regravação é recarregado (se alterado) pelo servidor HTTP do Apache a cada 300 segundos por padrão (o valor é configurável). O formato de arquivo deve seguir o formato de arquivo RewriteMap do mapa de valor-chave de texto simples descrito na documentação do Apache.
Um arquivo chamado managed-rewrite-maps.yaml
deve ser criado para especificar o local do arquivo de mapa de regravação e deve ser implantado uma vez, usando o pipeline de pilha completa do Cloud Manager ou o pipeline da camada da Web. O arquivo deve ser criado na pasta src/opt-in da configuração do Dispatcher. Certifique-se de usar a estrutura de arquivo do modo flexível.
Você pode configurá-lo com o seguinte padrão:
maps:
- name: my.map
path: <path-in-publish-repository>/redirectmap.txt
Se, por exemplo, o método escolhido para colocar o arquivo de mapa de regravação for assimilá-lo no AEM como um ativo chamado mysite-redirectmap.txt
e depois publicá-lo, você poderá especificar uma pasta em /content/dam
:
maps:
- name: my.map
path: /content/dam/redirectmaps/mysite-redirectmap.txt
Em seguida, em um arquivo de configuração do Apache como rewrites/rewrite.rules
ou <yourfile>.vhost
, você deve configurar o arquivo de mapa referenciado pela propriedade de nome (my.map
na amostra acima). Após carregado, este arquivo de mapa é salvo no armazenamento local do dispatcher no local corrigido /tmp/rewrites/
.
A diretiva RewriteMap
deve indicar que os dados são armazenados em um formato de arquivo do gerenciador de banco de dados (DBM) usando o formato sdbm
(DBM simples), e o caminho completo do arquivo é derivado do prefixo do local de armazenamento e da propriedade name.
O restante da configuração depende do formato do redirectmap.txt
. O formato mais simples, mostrado na amostra abaixo, é um mapeamento de um para um entre o url original e o url mapeado:
# RewriteMap from managed rewrite maps
RewriteMap map.foo dbm=sdbm:/tmp/rewrites/my.map
RewriteCond ${map.foo:$1} !=""
RewriteRule ^(.*)$ ${map.foo:$1|/} [L,R=301]
Considerações considerations
Lembre-se do seguinte:
- Por padrão, ao carregar um mapa de regravação, o Apache é inicializado sem esperar que os arquivos de mapa completos sejam carregados e, portanto, pode haver inconsistências temporárias até que os mapas completos sejam carregados. Essa configuração pode ser alterada para que o Apache aguarde o conteúdo completo do mapa ser carregado, mas leva mais tempo para que o Apache seja inicializado. Para alterar esse comportamento de forma que o Apache aguarde, adicione
wait:true
ao arquivomanaged-rewrite-maps.yaml
. - Para alterar a frequência entre cargas, adicione
ttl: <integer>
ao arquivomanaged-rewrite-maps.yaml
. Por exemplo:ttl: 120
. - O Apache tem um limite de comprimento de 1024 para entradas únicas de RewriteMap.