Como funciona esta verificação
O Scanaris recolhe todas as ligações <a href> do HTML da tua página e fica com as internas: as que resolvem para a tua mesma origem (domínio, protocolo e porta). Descarta mailto:, tel:, javascript:, as âncoras que começam por #, as ligações para a própria página e os duplicados, e limita a lista a 25 para não martelar o teu servidor. Visita cada uma e conta-a como quebrada só se responder 404, 410 ou um erro 5xx. Os redirecionamentos não são falha, um 401 ou 403 também não (pode ser uma zona privada de propósito), e se o pedido falhar por rede não é contado, para não dar falsos positivos. Se houver três ou mais ligações quebradas, o achado é de severidade média; com uma ou duas, baixa. Lista até dez com o seu código.
Porque importa
Uma ligação quebrada é um beco sem saída para o utilizador e para a Google. Para o utilizador, uma página de erro onde esperava o produto, o artigo ou o formulário, e uma razão para ir embora. Para a Google, orçamento de rastreio desperdiçado e um sinal de site descuidado; além disso, a autoridade que essa ligação transmitia à página de destino perde-se. As ligações quebradas na home são as piores, porque é a página mais rastreada e a que mais gente vê, e por isso esta verificação começa por aí.
Porque acontece
Páginas que mudaram de nome ou foram apagadas sem atualizar os menus nem o conteúdo que as ligava. Migrações de CMS ou de domínio que mudam a estrutura de URLs. Ligações escritas à mão com uma gralha. Um deploy que eliminou uma rota que o rodapé continuava a ligar. E em sites gerados com IA, ligações para páginas que a IA inventou no menu ("/pricing", "/docs") e que nunca chegaram a existir.
Como corrigir
- Se a página mudou de sítio, um redirecionamento 301 do URL antigo para o novo. Assim corriges de uma vez todas as ligações que apontavam para lá, incluindo as de outros sites. No Nuxt,
routeRules; no Next.js,redirects(); no Vercel e no Netlify, o ficheiro de redirecionamentos; no WordPress, um plugin de redirecionamentos. - Se a página já não existe e não tem substituta, tira a ligação. Se queres que a Google a esqueça depressa, responde 410 em vez de 404.
- Se é uma gralha, corrige o
href. As frameworks com rotas tipadas (Nuxt comtypedPages, Next.js comtypedRoutes) transformam estes erros em erros de compilação. - Os erros 5xx não são ligações mal escritas mas páginas que falham ao carregar. Revê os logs dessa rota: costuma ser uma consulta que rebenta ou um recurso que já não existe.
- Adiciona um verificador de ligações ao CI (
lychee,linkinator) para que a próxima rota quebrada não chegue a produção.
Confirma que está corrigido
curl -s https://teudominio.com | grep -oE 'href="/[^"#]*"' | cut -d'"' -f2 | sort -u | while read p; do
printf "%s " "$(curl -s -o /dev/null -w '%{http_code}' "https://teudominio.com$p")"; echo "$p"
done | grep -E "^(404|410|5)"
Não deve sair nenhuma linha. Repete com as páginas mais importantes além da home: cada página tem as suas próprias ligações.
Perguntas frequentes
O meu site é uma SPA e as rotas que não existem devolvem 200 com a app.
Então esta verificação não consegue detetar as tuas ligações quebradas, porque tudo responde 200. Mas a Google deteta-as como "soft 404" e trata-as como erros. Configura o teu servidor ou framework para que as rotas desconhecidas respondam com um 404 real.
E as ligações para outros sites?
Não são verificadas: muitos sites bloqueiam os bots e dariam falsos positivos. Revê-as tu de vez em quando com uma ferramenta de desktop ou com o verificador do CI, que podes configurar para as visitar com mais paciência.
Só tenho uma ligação quebrada e é de severidade baixa. Corrijo-a?
Sim: custa um minuto e a próxima análise confirma-o. Os outros restos de desenvolvimento que costumam acompanhar uma ligação quebrada, como URLs para localhost, procura-os referências internas; e que a Google tenha a lista correta das tuas páginas vê-o robots e sitemap.