Validar mapa de redirecionamentos
Uma planilha de redirecionamentos pode parecer correta linha por linha e ainda esconder um ciclo que prende rastreadores ou uma origem enviada para dois destinos diferentes.
Executar grátis
Cole o mapa CSV ou TSV para analisar o grafo inteiro antes da publicação. O relatório vincula cada achado ao respectivo registro, segue rotas inequívocas até o destino terminal e para de modo explícito quando não existe um final confiável.
Confira o plano antes de mover o tráfego
Erros de redirecionamento são mais baratos de corrigir enquanto o mapa ainda é um arquivo. O validador lê source, target e um status HTTP opcional de cada registro e monta o grafo direcionado que a configuração criaria depois da publicação. Ele aponta caminhos malformados, códigos não aceitos, origens associadas a destinos incompatíveis e autorredirecionamentos. Como a análise acontece sem rede, nenhuma URL de homologação ou produção é acessada e o mapa não é alterado. Assim, o resultado pode entrar na revisão da migração, no checklist de lançamento ou em um controle automatizado sem expor caminhos inéditos a terceiros.
Entenda cadeias, ciclos e destinos terminais
Cada origem utilizável é seguida até chegar a um destino que não aparece como nova origem. Um caminho de um salto recebe o estado direct. Caminhos mais longos são classificados como chain e informam a quantidade de saltos, a rota completa e final_target, permitindo que a equipe faça o achatamento de maneira consciente. Um ciclo é diferente porque não possui destino terminal. Em um loop de duas páginas, em um ciclo maior ou em uma rota que entra nele, a saída registra cycle e mostra o trecho repetido, mas omite final_target. Origens ambíguas e autorredirecionamentos também ficam sem destino inventado.
Use regras conservadoras para CSV e URL
A entrada aceita vírgula, ponto e vírgula, tabulação ou barra vertical, além de campos entre aspas, aspas escapadas e espaços ao redor do conteúdo. A detecção automática favorece um cabeçalho com source e target; um delimitador explícito atende exportações incomuns. As origens e os destinos podem ser URLs HTTP ou HTTPS absolutas ou caminhos iniciados por barra. Informe base_url quando os dois formatos precisarem ser comparados no mesmo grafo. A ferramenta preserva maiúsculas no caminho, consultas e caracteres codificados, evitando uma normalização agressiva que poderia unir endereços diferentes. Limites rígidos de bytes e linhas impedem arquivos excessivos antes da travessia.
Casos de uso
Revisão antes da migração
Valide a exportação recebida da agência, do CMS ou do inventário de rastreamento antes de alterar DNS, templates ou regras do servidor.
Qualidade contínua do mapa
Execute o relatório determinístico em cada entrega e impeça que origens conflitantes ou ciclos cheguem ao ambiente de produção.
Redução de cadeias antigas
Use a rota, a contagem de saltos e o destino terminal para substituir percursos longos por um redirecionamento direto revisado.
Perguntas frequentes
O validador acessa as URLs de origem ou destino?
Não. Ele analisa o texto como um grafo offline. Não segue redirecionamentos ativos, não testa respostas HTTP, não verifica a existência do destino e não transmite caminhos inéditos pela rede.
O que acontece quando existe um ciclo?
A resolução afetada recebe o estado cycle e inclui o caminho repetido. O campo final_target é omitido porque um ciclo não tem destino terminal.
Quais códigos de redirecionamento são aceitos?
A coluna opcional de código deve se chamar exatamente `status`; `code` e `status_code` não são reconhecidos. Ela aceita 301, 302, 307 e 308. Uma célula vazia usa 301; qualquer outro valor é relatado como status inválido na respectiva linha.
É possível misturar caminhos relativos e URLs absolutas?
Sim, mas informe base_url quando ambos fizerem parte do mesmo grafo. Sem a base, o relatório avisa sobre a mistura porque não deve adivinhar o domínio de um caminho.
A ferramenta é gratuita?
A ferramenta funciona localmente e sem custo em navegadores de computador e celular. A automação por API segue o mesmo contrato e usa a tarifa publicada US$ 0,002 do saldo pré-pago do KIT.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/seo/redirect-map-validate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mapping":"source,target,status\n/old-page,/new-page,301\n/new-page,/final-page,301"}'const res = await fetch("https://api.kit.forhosting.com/seo/redirect-map-validate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mapping": "source,target,status\n/old-page,/new-page,301\n/new-page,/final-page,301"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/seo/redirect-map-validate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mapping": "source,target,status\n/old-page,/new-page,301\n/new-page,/final-page,301"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/seo/redirect-map-validate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mapping":"source,target,status\\n/old-page,/new-page,301\\n/new-page,/final-page,301"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mapping":"source,target,status\n/old-page,/new-page,301\n/new-page,/final-page,301"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/seo/redirect-map-validate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"mapping": "source,target,status\n/old-page,/new-page,301\n/new-page,/final-page,301"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.redirect_map_validate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_bytes | 1048576 |
max_rows | 10000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |