Explorar evidências da auditoria

Seis casos HTTP locais, não uma varredura do seu site. Respostas antes e depois são testadas localmente; indexação no Google, tráfego e posições continuam desconhecidos.

A prioridade depende do objetivo do exemplo, não de uma pontuação SEO universal. Uma resposta correta não comprova indexação.

A01 · Página pública contém noindex

Prioridade: Alta

Observação
GET /launch retorna 200 e uma meta robots noindex. O objetivo é uma página pública elegível para busca.
Por que importa
A diretiva contradiz o objetivo. Sua presença é confirmada; não sabemos se o Google a leu.
Ação proposta
Remova a diretiva involuntária do modelo público. Confira também cabeçalhos e HTML renderizado.
Responsável
Desenvolvedor web
Critério de aceite
/fixed/launch retorna 200 sem noindex. Repita na produção e faça a Inspeção de URL autorizada separadamente.

Confirmado no caso local; alcance em produção e resultados de busca não verificados.

Antes

GET /launch
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><meta name="robots" content="noindex"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

Depois

GET /fixed/launch
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><link rel="canonical" href="/fixed/launch"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

A02 · Robots impede a leitura da exclusão

Prioridade: Alta

Observação
robots.txt bloqueia /blocked/; /blocked/page contém noindex. Busca-se excluir da pesquisa, não restringir acesso.
Por que importa
Um rastreador que respeita as regras não lê a diretiva. Robots não substitui autenticação.
Ação proposta
Permita o rastreamento mantendo noindex. Proteja conteúdo privado com autenticação.
Responsável
Responsável pela plataforma
Critério de aceite
/fixed/blocked/page está fora do prefixo bloqueado e mantém noindex. Confira regras reais e indexação posterior separadamente.

Confirmado no caso local; alcance em produção e resultados de busca não verificados.

Antes

GET /robots.txt
HTTP 200
Content-Type: text/plain; charset=utf-8

User-agent: *
Disallow: /blocked/


────────

GET /blocked/page
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><meta name="robots" content="noindex"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

Depois

GET /robots.txt
HTTP 200
Content-Type: text/plain; charset=utf-8

User-agent: *
Disallow: /blocked/


────────

GET /fixed/blocked/page
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><meta name="robots" content="noindex"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

A03 · Redirecionamento permanente termina em erro

Prioridade: Alta

Observação
/old-guide retorna 301 para /missing-guide, que responde 404. /guide é considerado um substituto pertinente.
Por que importa
O caminho não entrega o conteúdo esperado. Um redirecionamento não comprova um destino funcional.
Ação proposta
Aponte diretamente para o substituto pertinente e atualize links internos. Não envie todas as páginas removidas à página inicial.
Responsável
Desenvolvedor de rotas
Critério de aceite
/fixed/old-guide retorna uma 301 e depois /guide com 200 e conteúdo esperado. Inspecione toda a cadeia após publicar.

Confirmado no caso local; alcance em produção e resultados de busca não verificados.

Antes

GET /old-guide
HTTP 301
Location: /missing-guide



────────

GET /missing-guide
HTTP 404
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title></head><body><h1>Not found</h1></body></html>

Depois

GET /fixed/old-guide
HTTP 301
Location: /guide



────────

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><link rel="canonical" href="/guide"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

A04 · Canonical aponta para assunto diferente

Prioridade: Média

Observação
/variant declara /other-topic como canonical, embora duplique /guide.
Por que importa
A preferência contradiz a relação entre conteúdos. Isso não revela a canônica escolhida pelo Google.
Ação proposta
Confirme equivalência e alinhe canonical, links internos e sitemap com /guide. Preserve páginas com objetivos diferentes.
Responsável
Responsável SEO e desenvolvedor
Critério de aceite
/fixed/variant declara /guide e o destino funciona. Verifique a escolha do Google separadamente quando houver acesso.

Confirmado no caso local; alcance em produção e resultados de busca não verificados.

Antes

GET /variant
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><link rel="canonical" href="/other-topic"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

Depois

GET /fixed/variant
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><link rel="canonical" href="/guide"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

A05 · Página ausente responde com sucesso

Prioridade: Média

Observação
/gone retorna 200 com título Not found. Não existe substituto adequado.
Por que importa
Conteúdo de erro e status de sucesso divergem: candidato a soft 404, não uma classificação observada do Google.
Ação proposta
Retorne o status apropriado de recurso ausente e remova links internos antigos. Mantenha uma página de erro útil.
Responsável
Desenvolvedor web
Critério de aceite
/fixed/gone retorna 404 com o erro. Uma observação posterior no Search Console é evidência independente.

Confirmado no caso local; alcance em produção e resultados de busca não verificados.

Antes

GET /gone
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title></head><body><h1>Not found</h1></body></html>

Depois

GET /fixed/gone
HTTP 404
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title></head><body><h1>Not found</h1></body></html>

A06 · Controle funcional não exige correção especulativa

Prioridade: Sem alteração

Observação
/guide retorna 200, declara a si mesma como canonical e não é bloqueada por estas regras robots. Não contém noindex nesta resposta.
Por que importa
Estes testes locais passam. Não comprovam qualidade, renderização, descoberta, indexação ou posições.
Ação proposta
Registre o controle aprovado. Investigue outros sinais quando uma pergunta concreta justificar.
Responsável
Revisor da auditoria
Critério de aceite
As respostas antes e depois permanecem idênticas. Preserve a evidência sem inventar problemas para elevar a contagem.

Confirmado no caso local; alcance em produção e resultados de busca não verificados.

Antes

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><link rel="canonical" href="/guide"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

Depois

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><link rel="canonical" href="/guide"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

Executar os casos

Executar os casos

Seis casos HTTP locais, não uma varredura do seu site. Respostas antes e depois são testadas localmente; indexação no Google, tráfego e posições continuam desconhecidos.

Python 3.10 ou superior. Extraia o ZIP localmente. A verificação inicia um servidor temporário de loopback, testa os casos, imprime JSON e termina. Não consulta sites externos.

python3 audit_lab.py --verify

Para inspeção manual, inicie o servidor abaixo, abra as URLs locais e encerre com Ctrl+C. Escolha outra porta se 8765 estiver ocupada.

python3 audit_lab.py --port 8765

http://127.0.0.1:8765/robots.txt

http://127.0.0.1:8765/launch

http://127.0.0.1:8765/fixed/launch

http://127.0.0.1:8765/blocked/page

http://127.0.0.1:8765/fixed/blocked/page

http://127.0.0.1:8765/old-guide

http://127.0.0.1:8765/missing-guide

http://127.0.0.1:8765/fixed/old-guide

http://127.0.0.1:8765/guide

http://127.0.0.1:8765/variant

http://127.0.0.1:8765/fixed/variant

http://127.0.0.1:8765/gone

http://127.0.0.1:8765/fixed/gone

http://127.0.0.1:8765/guide

http://127.0.0.1:8765/guide

Comandos e caminhos são identificadores técnicos; o texto do relatório está traduzido.

Resultado de indexação: desconhecido

Resultado de indexação: desconhecido