technical
Código de estado HTTP 200
O MetricSpot verifica o estado HTTP do URL auditado. Qualquer coisa diferente de 2xx — uma cadeia de redirecionamento, um 404, um 500 — faz os crawlers saltarem a página.
O que esta verificação faz
Envia um pedido GET ao URL auditado e lê o código de estado HTTP final. A verificação só passa em 200 OK. Sinaliza:
- redirecionamentos 3xx (o URL não é o canónico)
- erros 4xx (404 página não encontrada, 410 gone, 403 forbidden)
- erros 5xx (queda do servidor, gateway timeout)
O crawler segue até um pequeno número de redirecionamentos para também te poder dizer qual o estado final no fim da cadeia.
Porque é importante
Os motores de busca e os crawlers de IA tratam respostas não-200 como “não indexar este URL”.
- 301/302 — o URL não vai ranquear; o destino do redirecionamento sim. Se partilhaste
example.com/post-antigoe ele faz 301 paraexample.com/post-novo, cada backlink, cada partilha social, cada seleção em featured snippet aponta para um URL que o Google vai deixar cair do índice em poucas semanas. - 404 / 410 — o URL é removido do índice. Se isto aconteceu por acidente (gralha numa regra de redirecionamento, falta de barra final, página apagada que ainda tem backlinks), estás a perder tráfego silenciosamente.
- 500 / 502 / 503 / 504 — o Google tenta de novo e depois desindexa após uns dias de falhas. Pior, o Googlebot vai reduzir o crawl budget de todo o domínio.
Uma página que devolva algo diferente de 200 é invisível.
Como corrigir
Primeiro vê exatamente o que o servidor devolve. O curl -I mostra a cadeia toda:
curl -ILso /dev/null -w "%{http_code} %{url_effective}\n" https://example.com/pagina
Adiciona -L e -w "%{http_code} -> %{redirect_url}\n" para mapear todos os saltos. Se vires várias linhas 30x antes do 200 final, tens uma cadeia de redirecionamento — também vale a pena corrigir.
Se o URL deveria devolver 200 mas devolve 301/302:
Culpados comuns:
- Discrepância de WWW ou de barra final —
example.com/paginafaz 301 paraexample.com/pagina/. Escolhe uma forma canónica (com ou sem barra) e linka-a consistentemente. Não ligues internamente para a forma que redireciona. - Upgrade HTTPS —
http://example.com/paginafaz 301 parahttps://example.com/pagina. Esperado, mas garante que todos os links internos e o sitemap usam HTTPS para que os crawlers nunca cheguem ao redirecionamento. Vê Redirecionar HTTP para HTTPS. - Redirecionamento de locale no caminho raiz —
/faz 302 para/en/com base emAccept-Language. O Googlebot rasteja a partir dos EUA comen-US, por isso/torna-se um redirecionamento para/en/. Ou fazes com que/sirva diretamente o conteúdo em inglês (comhreflangpara os outros locales) ou usas um 302 mais um hreflangx-default.
Se o URL devolve 404 por acidente:
- Verifica a configuração de routing (nginx
try_files, Next.js[...slug].tsx, AstrogetStaticPaths). - Verifica a sensibilidade a maiúsculas —
/Aboute/aboutsão URLs diferentes em servidores Linux. - Verifica a base de dados — uma página de CMS marcada como “rascunho” devolve 404 na maioria dos templates.
Se a página estiver genuinamente removida, devolve 410 Gone em vez de 404 — o Google desindexa 410s cerca de duas vezes mais depressa. Configura uma página 404 personalizada para que a resposta continue útil para humanos.
Se o URL devolve 5xx:
Isto é um problema do servidor, não de configuração. Consulta os logs da aplicação no momento em que o MetricSpot correu a auditoria. Causas comuns: pool de ligações à base de dados esgotado, out-of-memory numa função serverless, API de terceiros de que a página depende devolveu timeout.
Receitas:
# nginx — 200 explícito para uma rota, sem redirecionamento
location = /pricing {
try_files /pricing.html =404;
}
// Express — devolver 410 para URLs removidos permanentemente
app.get("/old-product/:id", (req, res) => res.status(410).send("Gone"));
// Next.js (App Router) — devolver 410 a partir de um segmento de rota
import { notFound } from "next/navigation";
export default async function Page({ params }) {
const product = await getProduct(params.id);
if (!product) notFound(); // devolve 404 por defeito
// ...
}
Em sites estáticos com Astro, um 410 tem de ser servido pelo teu host (nginx return 410; ou Cloudflare Worker), já que o output estático do Astro só emite 404s para rotas em falta.
Perguntas frequentes
O 301 é sempre mau?
Não. Um 301 é correto quando o URL mudou genuinamente — slug antigo para slug novo, HTTP para HTTPS, www para não-www. Só é mau quando o MetricSpot audita o URL que pretendes ser canónico e ele faz 301 para outro lado — isso significa que nos deste (e ao Google, e a todos os backlinks) o URL errado.
Devo devolver 200 para páginas em falta com uma mensagem de “não encontrado”?
Não. Devolver 200 com conteúdo “página não encontrada” chama-se soft 404. O Google deteta-o (por padrão de conteúdo) e trata-o como 404 de qualquer forma, mas confunde a analítica e inflaciona o teu crawl budget. Devolve sempre o código HTTP correto.
E o 304 Not Modified?
O 304 é uma resposta condicional bem-sucedida — o navegador já tem a página em cache. Não é um problema; o MetricSpot não envia cabeçalhos If-Modified-Since, por isso não o vês normalmente no nosso crawl. Se vires, a tua CDN está demasiado agressiva a fazer cache de respostas a GETs não autenticados.
Fontes
Última atualização 2026-05-11