Validare una mappa di reindirizzamenti
Una tabella di reindirizzamenti può sembrare corretta riga per riga e nascondere comunque un ciclo che intrappola i crawler oppure una sorgente assegnata a due destinazioni diverse.
Esegui gratis nel browser
Incolli il file CSV o TSV per analizzare l’intero grafo prima della pubblicazione. Il rapporto collega ogni rilievo al suo record, segue i percorsi non ambigui fino al termine e si ferma in modo esplicito quando non esiste una destinazione finale attendibile.
Controlli il piano prima di spostare il traffico
Gli errori di reindirizzamento sono più semplici da correggere quando la mappa è ancora un file. Il validatore legge source, target e lo stato HTTP facoltativo di ogni record, quindi costruisce il grafo diretto che le regole produrrebbero dopo il rilascio. Segnala percorsi non validi, codici non ammessi, una sorgente collegata a destinazioni incompatibili e i reindirizzamenti verso sé stessa. Poiché l’analisi è offline, non vengono richiesti indirizzi di collaudo o produzione e il file non viene modificato. Il risultato può quindi entrare in una revisione di migrazione, in una checklist di lancio o in un controllo automatico senza esporre percorsi ancora riservati.
Distingua catene, cicli e destinazioni terminali
Ogni sorgente utilizzabile viene seguita finché raggiunge un target che non compare come un’altra sorgente. Un percorso con un solo salto è direct. Un percorso più lungo diventa chain e riporta il numero di salti, il tragitto completo e final_target, così Lei può accorciarlo consapevolmente. Un ciclo, invece, non possiede alcun termine. Per un anello di due pagine, un ciclo più ampio o un percorso che entra nel ciclo, l’uscita indica cycle e mostra il tratto ripetuto, ma omette final_target. Anche le sorgenti ambigue e gli autorinvii rimangono senza una destinazione inventata.
Usi regole prudenti per CSV e URL
L’ingresso accetta virgola, punto e virgola, tabulazione o barra verticale e gestisce campi tra virgolette, virgolette raddoppiate e spazi esterni. Il rilevamento automatico privilegia un’intestazione con source e target; per esportazioni particolari può indicare esplicitamente il separatore. Sorgente e destinazione possono essere URL HTTP o HTTPS assoluti oppure percorsi che iniziano con una barra. Inserisca base_url quando le due forme devono appartenere allo stesso grafo. Maiuscole del percorso, query e caratteri codificati restano distinti, evitando normalizzazioni aggressive. Limiti rigidi di byte e righe rifiutano mappe eccessive prima dell’analisi del grafo.
Casi d'uso
Verifica prima della migrazione
Validi l’esportazione ricevuta dall’agenzia, dal CMS o dall’inventario di scansione prima di cambiare DNS, template o regole del server.
Qualità continua della mappa
Esegua lo stesso rapporto deterministico a ogni rilascio e impedisca a sorgenti in conflitto o cicli di raggiungere la produzione.
Riduzione delle catene storiche
Utilizzi percorso, numero di salti e destinazione terminale per sostituire un tragitto multiplo con un reindirizzamento diretto verificato.
Domande frequenti
Il validatore visita gli URL di origine o destinazione?
No. Analizza il testo come grafo offline. Non segue reindirizzamenti attivi, non prova risposte HTTP, non conferma l’esistenza del target e non invia percorsi inediti sulla rete.
Che cosa accade quando viene trovato un ciclo?
La risoluzione interessata assume lo stato cycle e include il percorso ripetuto. final_target non compare, perché un ciclo non ha una destinazione terminale.
Quali codici di reindirizzamento sono ammessi?
La colonna facoltativa del codice deve chiamarsi esattamente `status`; `code` e `status_code` non vengono riconosciuti. Accetta 301, 302, 307 e 308. Una cella vuota usa 301; ogni altro valore viene segnalato come stato non valido nella sua riga.
Si possono mescolare percorsi relativi e URL assoluti?
Sì, ma indichi base_url quando devono comporre un unico grafo. Senza la base viene emesso un avviso, perché non è corretto indovinare il dominio del percorso.
Lo strumento è gratuito?
Lo strumento nel browser funziona localmente e gratis su computer e dispositivi mobili. L’automazione API usa lo stesso contratto e addebita la tariffa pubblicata $0.002 al saldo KIT prepagato.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
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)Esempio di richiesta
{
"mapping": "source,target,status\n/old-page,/new-page,301\n/new-page,/final-page,301"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.redirect_map_validate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_bytes | 1048576 |
max_rows | 10000 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |