404 Not Found: links quebrados, soft 404s e quando usar o 410
Um 404 Not Found significa que o servidor não tem uma representação atual para aquela URL, e não diz nada sobre se o recurso já existiu ou vai voltar. Essa ambiguidade é o ponto: um 404 pode ser um link quebrado que você deveria corrigir, uma página que você removeu de propósito, ou uma página que funciona perfeitamente e só finge estar ausente.
O que um 404 diz e não diz
Segundo a RFC 9110, um 404 significa que o servidor de origem não encontrou uma representação atual para o recurso alvo, ou não está disposto a revelar que uma existe. Dois detalhes seguem dessa formulação.
Primeiro, um 404 é deliberadamente evasivo sobre permanência. Não promete que a URL vai continuar morta, e é por isso que os rastreadores continuam tentando URLs 404 por um bom tempo. Segundo, o 404 é armazenável em cache por padrão segundo a RFC 9111, então um proxy de cache ou CDN pode guardar o erro e continuar servindo-o depois de você ter corrigido o problema de origem. Sempre limpe o cache depois de corrigir um 404 e teste de novo.
Um 404 também é uma resposta normal e saudável. Todo site devolve alguns. Os que valem o seu tempo são em URLs que deveriam funcionar, ou em URLs que as pessoas estão tentando alcançar.
Link quebrado ou genuinamente removido?
Esses dois casos parecem idênticos em um código de status e precisam de respostas opostas.
Um link quebrado significa que o conteúdo existe mas a URL está errada. As causas usuais são um erro de digitação em um link interno, um slug editado depois da publicação, uma incompatibilidade de maiúsculas/minúsculas, uma diferença de barra final, uma migração de site que mudou o esquema de URL, ou uma implantação que parou de gerar um arquivo. A correção é restaurar a URL ou redirecioná-la.
Uma remoção genuína significa que o conteúdo se foi e não vai voltar: uma vaga de emprego vencida, um produto descontinuado, uma página de conta apagada. Aqui um 404 é honesto mas preguiçoso, porque deixa os rastreadores tentando de novo e os visitantes sem nada.
Forma prática de diferenciar: existe uma página equivalente em algum lugar do site hoje? Se sim, redirecione. Se não, decida entre 404 e 410.
410 Gone, a alternativa honesta
O 410 diz que o recurso estava disponível e foi removido intencionalmente, e a condição é esperada ser permanente. Onde 404 significa "não encontrado", 410 significa "apagado de propósito, pare de perguntar".
Use o 410 quando você aposenta conteúdo deliberadamente e não tem substituto. É o sinal correto para vagas vencidas, páginas de produto descontinuadas e conteúdo removido por motivos legais ou editoriais. Os buscadores geralmente tratam o 410 como um sinal de remoção mais forte e rápido do que o 404, embora os dois eventualmente descartem a URL. Como o 404, o 410 é armazenável em cache por padrão.
Não use o 410 para nada que você possa restaurar, e não o use como um tratador genérico para URLs desconhecidas. Se existe uma página de substituição adequada, um redirecionamento é melhor do que qualquer um dos dois códigos, e a escolha do redirecionamento importa: veja 301 vs 302 para escolher o certo.
Soft 404s e por que os monitores os perdem
Um soft 404 é uma página que devolve 200 OK enquanto o conteúdo dela diz que o recurso está ausente. Isso acontece quando uma aplicação captura a própria condição de não-encontrado e renderiza um template amigável de "página não encontrada" sem definir o código de status, ou quando uma rota abrangente serve a página inicial para toda URL não correspondida.
Os buscadores e os monitores de uptime então leem a mesma página de formas opostas. O Google inspeciona o conteúdo renderizado, reconhece o padrão de conteúdo ausente e o classifica como um soft 404 no Search Console, então a URL não é indexada mas o orçamento de rastreamento ainda é gasto nela e o sinal fica confuso. Um monitor que compara códigos de status vê 200 e reporta a página como saudável, que é como uma seção inteira pode servir texto de "não encontrado" para todo visitante enquanto o painel continua verde.
A correção no site é devolver um 404 real com a página de erro, o que não custa nada e satisfaz os dois leitores. A correção no monitoramento é fazer asserção sobre conteúdo além de status: verifique se uma frase conhecida da página real está presente, para que uma página que devolve 200 com o corpo errado ainda falhe na verificação.
Como corrigir 404s na ordem certa
- Confirme o código real, não a página visível. Uma tela de erro amigável não prova nada:
Se isso imprimir 200 para uma página que diz "não encontrado", você tem um soft 404.curl -sS -o /dev/null -w "%{http_code}\n" https://example.com/missing-page - Descubra quais URLs estão sendo atingidas. Logs de acesso do servidor e o Search Console listam URLs 404 com volume. Corrija por tráfego, não em ordem alfabética.
- Corrija links internos primeiro. Um 404 alcançado a partir da sua própria navegação está inteiramente sob o seu controle e é a correção de maior valor.
- Redirecione onde existe um equivalente real. Mapeie a URL antiga para a página atual mais próxima, uma URL de cada vez. Evite redirecionar tudo para a página inicial, que os buscadores também tratam como um soft 404.
- Devolva 410 para remoções deliberadas sem substituto, para que os rastreadores parem de tentar de novo.
- Torne a página 404 útil. Busca, navegação principal e links populares recuperam visitantes que uma página de erro simples perde.
- Limpe caches e teste de novo. Como o 404 é armazenável em cache, verifique a URL corrigida de fora da sua rede, não só da origem.
Verificando o código e o conteúdo juntos
Uma edição de slug, uma atualização de plugin ou uma mudança de roteamento quebra um conjunto de URLs enquanto a página inicial continua carregando, então nada alerta e ninguém percebe até o tráfego ou as conversões caírem. Uma verificação HTTP agendada nas suas URLs importantes compara tanto o código de status quanto o conteúdo esperado da página, o que pega tanto um 404 real quanto um soft 404. Para a família mais ampla de códigos do lado do cliente, e para diferenciar um erro genuíno de cliente de uma configuração incorreta de servidor, veja a visão geral do 4xx.