Generi tag hreflang per pagine multilingue
Indichi ogni versione di una pagina con la lingua e l'indirizzo e ottenga i tag alternativi pronti da incollare: en-us diventa en-US, i doppioni vengono rifiutati e il link x-default facoltativo va in fondo. Gratis nel Suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Funziona nel tuo browser: gratis, senza registrazione, i file non escono dal tuo dispositivo.
Il generatore di tag hreflang trasforma un elenco strutturato di versioni linguistiche o regionali in elementi link HTML pronti da inserire. Lei indica ogni codice locale con il relativo URL assoluto, aggiunge se necessario una destinazione generale x-default e riceve sia i singoli record sia un blocco HTML completo. Lo strumento convalida la sintassi, normalizza le maiuscole convenzionali, rifiuta i duplicati e protegge gli attributi HTML. È utile per siti multilingue, cataloghi internazionali, portali di documentazione e flussi editoriali che devono dichiarare pagine alternative in modo uniforme.
Crei una mappa completa delle versioni
Inserisca una riga per ogni pagina equivalente appartenente allo stesso gruppo multilingue o multiregionale. Un codice semplice come it o fr va bene quando una sola pagina serve tutte le persone che parlano quella lingua. Aggiunga una regione, per esempio it-CH o fr-CA, se prezzi, disponibilità, ortografia o condizioni legali cambiano in base al mercato.
Un sottotag di scrittura di quattro lettere distingue gli alfabeti, come zh-Hans o sr-Latn. Il generatore accetta una lingua di due o tre lettere, una scrittura facoltativa e una regione facoltativa di due lettere o tre cifre. Normalizza inoltre l’uso delle maiuscole per evitare markup incoerente.
Includa la pagina corrente e tutte le alternative: un gruppo hreflang deve descrivere l’insieme completo. Scelga URL canonici, indicizzabili e specifici per il pubblico dichiarato. L’ordine delle righe resta invariato, rendendo il risultato stabile e facile da controllare nel versionamento.
Scelga x-default con attenzione
Usi il campo facoltativo x-default per la pagina destinata a chi non corrisponde a nessuna versione linguistica o regionale dichiarata. Può essere un selettore di lingua, una pagina internazionale o una versione neutrale che consenta di scegliere. Non inserisca x-default come riga ordinaria: il campo dedicato evita dichiarazioni duplicate o ambigue e colloca sempre il ripiego dopo i link specifici.
Può lasciarlo vuoto se non esiste una destinazione generale utile. L’HTML restituito contiene un elemento link per ogni associazione e, se indicato, un elemento x-default aggiuntivo. Mantenga la reciprocità: ogni pagina deve indicare se stessa e lo stesso gruppo di alternative.
Lo strumento genera la dichiarazione, ma non verifica che le pagine remote pubblichino gli stessi link, siano indicizzabili o non reindirizzino. Per questi controlli serve un audit o una scansione separata.
Convalidi, pubblichi e mantenga l’output
I codici non validi vengono rifiutati anziché prodotti silenziosamente. In questo modo emergono trattini bassi, spazi esterni, lingua mancante, sottotag aggiuntivi non supportati o x-default nell’elenco normale. Anche i duplicati vengono rifiutati dopo la normalizzazione, quindi en-us ed en-US non possono creare destinazioni concorrenti.
Quando l’input è valido, copi il campo html nel modello oppure utilizzi l’array links se il framework genera autonomamente i metadati del head. Ogni record contiene hreflang normalizzato, URL originale e tag completo, agevolando CMS e pipeline. Rigeneri il blocco quando cambiano le rotte, apre un mercato o si sposta il ripiego.
Consideri la mappa una configurazione del sito da mantenere nel tempo. Nei processi automatici conservi l’input accanto alle rotte e confronti l’output durante il rilascio.
Casi d'uso
Lanciare un negozio regionale
Generi alternative coerenti per i prodotti di ogni Paese e un selettore internazionale come x-default.
Pubblicare documentazione localizzata
Trasformi le rotte tradotte in un blocco HTML stabile da includere in ogni compilazione del sito.
Automatizzare i metadati del CMS
Usi i link strutturati per compilare il head quando la redazione aggiunge o sposta una traduzione.
Domande frequenti
Quali formati di codice locale sono accettati?
Usi una lingua di due o tre lettere, seguita facoltativamente da una scrittura di quattro lettere e una regione di due lettere o tre cifre, come it, zh-Hans o es-419.
Perché i codici duplicati vengono rifiutati?
Ogni gruppo deve avere una destinazione per ciascun valore hreflang. I codici vengono confrontati dopo la normalizzazione.
Lo strumento verifica i link reciproci?
No. Crea il markup senza accesso alla rete. Per controllare il sito pubblicato usi un verificatore hreflang o una scansione.
Quando conviene aggiungere un link x-default?
Quando esiste una pagina per i visitatori a cui non corrisponde nessuna versione per lingua o regione, come un selettore della lingua o una pagina internazionale. È facoltativo e compare sempre dopo gli altri link.
Una pagina deve elencare se stessa tra le alternative hreflang?
Sì. Un gruppo hreflang descrive l'insieme completo delle versioni, quindi ogni pagina deve includere il proprio indirizzo oltre a tutte le alternative, e tutte le pagine del gruppo devono riportare lo stesso elenco.
Strumenti correlati
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/web/hreflang-tags-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"locales":[{"locale":"en","url":"https://example.com/en/product"},{"locale":"fr-FR","url":"https://example.com/fr/produit"}]}'const res = await fetch("https://api.kit.forhosting.com/web/hreflang-tags-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"locales": [
{
"locale": "en",
"url": "https://example.com/en/product"
},
{
"locale": "fr-FR",
"url": "https://example.com/fr/produit"
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/hreflang-tags-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"locales": [
{
"locale": "en",
"url": "https://example.com/en/product"
},
{
"locale": "fr-FR",
"url": "https://example.com/fr/produit"
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/hreflang-tags-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"locales":[{"locale":"en","url":"https://example.com/en/product"},{"locale":"fr-FR","url":"https://example.com/fr/produit"}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"locales":[{"locale":"en","url":"https://example.com/en/product"},{"locale":"fr-FR","url":"https://example.com/fr/produit"}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/hreflang-tags-generate", 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
{
"locales": [
{
"locale": "en",
"url": "https://example.com/en/product"
},
{
"locale": "fr-FR",
"url": "https://example.com/fr/produit"
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.hreflang_tags_generate",
"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
timeout_sec | 30 |
max_crawl_pages | 25 |
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. |
Note tecniche
Crei una mappa completa delle versioni
Ogni riga richiede un codice locale e un URL HTTP o HTTPS assoluto.
Scelga x-default con attenzione
Inserisca l’intero blocco nel head di tutte le pagine del gruppo oppure invii intestazioni Link equivalenti se l’applicazione gestisce le alternative tramite HTTP.
Convalidi, pubblichi e mantenga l’output
Gli URL devono essere assoluti e usare HTTP o HTTPS; percorsi relativi e altri schemi non identificano pagine scansionabili. Ogni richiesta API costa $0.002; il browser è adatto alle operazioni occasionali e l’API deterministica alle pubblicazioni ripetibili.
Domande tecniche
Il generatore include x-default?
Sì. Indichi l’URL facoltativo x_default e il relativo tag verrà aggiunto dopo quelli linguistici.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. La stessa generazione deterministica può essere eseguita anche nel browser.