# Mappa dei redirect 301, una riga per URL

Una mappa dei redirect 301 è una tabella vecchio→nuovo con una riga per URL e una sola destinazione finale. Le catene e i 404 di arrivo si trovano con uno script.

> Pagina: https://ui.eneawork.it/blog/redirect-301-mappa
> Markdown: https://ui.eneawork.it/blog/redirect-301-mappa.md

*2026-11-01*

Una mappa dei redirect 301 è una tabella con una riga per vecchio URL e una sola destinazione finale. Se una riga porta a un'altra riga, la catena perde segnali e tempo: la mappa si controlla con uno script, non a occhio.

Il catalogo EneUI conta 111.985 componenti, 1.556 blocchi e 12.808 icone da 1.472 librerie, letti da /api/stats il 1 novembre 2026. Nello stesso giorno il codice del sito contiene 2 regole permanenti: /bookmarks e /it/bookmarks verso /contact, e ogni ranking /best/<slug> ritirato verso /best. Le 6 pagine campionate fra i 918 URL di sitemap-blog.xml rispondono tutte 200, senza redirect: una sitemap che elenca un 301 è un errore, non una scorciatoia.

## Da dove vengono le righe

Le righe non si inventano: arrivano da tre fonti verificabili. Il report delle 404 in Search Console dice quali URL Google ha provato a leggere; l'access log del server dice quali URL le persone hanno chiesto; la sitemap vecchia dice quali URL esistevano davvero. Il primo comando estrae i path più richiesti che oggi rispondono 404.

awk '$9 == "404" {print $7}' access.log | sed 's/?" HTTP.*//' | sort | uniq -c | sort -rn | head -n 20 > missing.txt wc -l missing.txt

Il comando legge il campo 7 del log combinato, che contiene il path richiesto, tiene le righe con stato 404, toglie la query string e ordina per frequenza. In missing.txt restano i venti path rotti più richiesti: sono i candidati della mappa, non tutti i 404 del sito. Un path chiesto una volta può ignorarlo; uno chiesto duecento volte è un link esterno rotto.

## Una mappa, una destinazione

## Il controllo prima del deploy

while IFS=$'\t' read -r from to; do code=$(curl -s -o /dev/null -w "%{http_code}" "https://example.com$from") echo "$code $from -> $to" done < redirects.tsv

Lo script legge un file con due colonne separate da tabulazione, vecchio URL e nuovo, e chiede ogni vecchio URL senza seguire il redirect. Una riga che stampa 200 significa che il redirect non è attivo; 301 o 308 è il caso atteso; 404 sulla destinazione si vede solo seguendo il redirect, con curl -L. La documentazione di Google sui redirect, letta il 1 novembre 2026, conferma che 301 e 308 indicano entrambi uno spostamento permanente e che un redirect temporaneo mantiene il vecchio URL nei risultati.

## Il catalogo EneUI

Sui cataloghi grandi il rischio è il cambio di slug: le 111.985 schede sotto /components, i 1.556 blocchi sotto /blocks e le 30 categorie come /blocks/category/table con 13 blocchi sono URL pubblici. Quando una fonte cambia nome il record si sposta, e senza una riga di mappa il vecchio URL muore. La regola che usiamo: lo slug non cambia mai; se cambia, la riga di redirect entra nello stesso commit. Verificato il 1 novembre 2026.

## La limitazione

Un 301 viene memorizzato dal browser, spesso senza scadenza: chi ha già visitato il vecchio URL continuerà a finire sul nuovo anche dopo che la regola è stata rimossa. Per questo la mappa si prova in staging, e per questo un redirect sbagliato non si annulla con un deploy. La mappa, inoltre, non ripara i link esterni che puntano a un 404 mai esistito: quelli richiedono link nuovi o una pagina che risponda.

## Dove continuare

I redirect di lingua nel middleware sono in middleware per il redirect di locale; la differenza fra canonical e redirect è in canonical, la guida pratica; la sequenza per entrare nell'indice è in indicizzare un sito su Google.

## FAQ

### Meglio 301 o 302?

301 se lo spostamento è definitivo, 302 se è temporaneo. Con un 302 Google mantiene il vecchio URL nei risultati, quindi non usarlo per un cambio di slug permanente.

### 301 e 308 sono equivalenti per Google?

Sì, entrambi indicano uno spostamento permanente. Il 308 conserva il metodo HTTP della richiesta, il 301 no; per il posizionamento la differenza non conta.

### Quante righe può avere una mappa?

Quante servono, senza duplicati: una riga per vecchio URL. Su un sito grande la mappa vive in un file o in una tabella, non a mano nel codice.

### Un redirect passa tutti i segnali?

Google usa il redirect come segnale forte per spostare il canonical, ma non è una garanzia matematica. Una catena di tre redirect indebolisce il segnale: meglio un salto solo.

### Come trovo i redirect da creare?

Dal report 404 di Search Console, dall'access log e dalla sitemap precedente. Un URL chiesto molte volte e assente è il primo candidato.
