SEO
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.
In sintesi
- 301 e 308 sono entrambi permanenti: il 308 conserva il metodo HTTP, il 301 no, e Google li tratta allo stesso modo.
- Una mappa sana ha una sola riga per vecchio URL e porta sempre a una destinazione che risponde 200.
- Il browser memorizza un 301: un redirect sbagliato è difficile da annullare per chi ha già visitato la pagina.
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.
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
- Una riga per vecchio URL: due regole per lo stesso path rendono l'esito dipendente dall'ordine del server.
- Destinazione finale, non intermedia: se /a porta a /b e /b porta a /c, la mappa deve portare /a a /c.
- La destinazione risponde 200: un redirect verso un 404 è peggio di nessun redirect.
- Solo redirect permanenti: 301 o 308. Un 302 dice a Google che il vecchio URL tornerà, e il vecchio URL resta nei risultati.
Il controllo prima del deploy
while IFS=