Redirect
In questa pagina
Redirect
Mantieni funzionante un vecchio URL dopo aver spostato, rinominato o ristrutturato una pagina - viene scritto uno stub HTML statico al vecchio percorso, così una voce di indice obsoleta di un motore di ricerca o il vecchio segnalibro di qualcuno atterrano comunque sulla pagina giusta invece di dare un 404. Non è coinvolta nessuna regola di riscrittura lato server (un host statico non ha dove eseguirne una) - lo stub è solo l'HTML sufficiente perché un browser si reindirizzi da solo e un crawler apprenda il vero URL canonico.
Per pagina: frontmatter redirect_from
Aggiungi uno o più vecchi percorsi al proprio frontmatter di una pagina:
---
title: New Setup
redirect_from:
- guides/old-setup
- setup
---
Ogni voce è un segmento URL "pretty" - senza slash iniziale/finale, senza
estensione .md/.html - la stessa forma che assume l'URL proprio della
pagina. Una build scrive quindi uno stub per ciascuno
(site/guides/old-setup/index.html, site/setup/index.html per
l'esempio sopra), entrambi che reindirizzano al vero URL proprio di
questa pagina.
redirect_from è limitato all'albero a cui appartiene la pagina stessa -
la pagina propria di una versione reindirizza all'interno di quella
versione (site/versions/2.0/old-path/), la pagina tradotta propria di
una locale reindirizza all'interno di quella locale
(site/es/old-path/), esattamente come già fa il vero URL proprio della
pagina. Non c'è nulla di extra da configurare per albero.
A livello di sito: bxsites.yaml redirects
Per un vecchio URL che non è mai appartenuto a una pagina specifica - una
sezione ristrutturata, il percorso di un vecchio dominio, qualsiasi cosa
non sia naturalmente il proprio "vecchio nome" di una singola pagina -
elenca invece una coppia esplicita from/to:
redirects:
- from: old-guide
to: guides/new-guide/
- from: moved-to-another-site
to: https://example.com/docs
{
"redirects": [
{ "from": "old-guide", "to": "guides/new-guide/" },
{ "from": "moved-to-another-site", "to": "https://example.com/docs" }
]
}
from- il vecchio segmento URL "pretty", stessa forma diredirect_fromsoprato- un percorso relativo alla radice (risolto rispetto al propriobaseURLdel sito, la stessa convenzione già usata datheme.logo/ogImage) oppure un URLhttps://completo, per reindirizzare completamente fuori dal sito
redirects si applica sempre solo all'albero principale del sito - un
to nudo è un percorso relativo alla radice che è univoco solo alla
radice del sito. Un albero di versione/locale che vuole la stessa mappatura
di vecchio URL ha bisogno invece del proprio redirect_from a livello di
pagina.
page:rename lo imposta per te
Rinominare/spostare una pagina con page:rename aggiunge automaticamente
il suo vecchio percorso al proprio redirect_from della pagina spostata
- oltre a riscrivere ogni link Markdown relativo che vi puntava, anche il vecchio URL stesso continua a funzionare:
bxSites page:rename --from=guides/old-setup.md --to=guides/new-setup.md
Rinominare una pagina più di una volta continua semplicemente ad
aggiungere - l'elenco redirect_from di una pagina può contenere tutti i
vecchi percorsi che ha avuto nel tempo.
Conflitti
Una build fallisce del tutto, invece di sovrascrivere silenziosamente contenuto reale, se:
- Il proprio percorso
fromdi un redirect collide con una pagina reale già costruita a quel percorso (BxSites.RedirectConflict) - Due redirect (voci
redirect_from, voci di configurazioneredirects, o una di ciascuna) puntano entrambi allo stesso percorsofrom
Cosa è fuori scopo (per ora)
- I post del blog non ottengono
redirect_from. La chiave di frontmatter viene letta solo per le pagine regolari didocs/, non perdocs/blog/posts/**- un post del blog spostato ha bisogno invece della propria voce di configurazioneredirects. - Nessun redirect con wildcard/pattern. Ogni
fromè un vecchio percorso esatto - non esiste un catch-allguides/old/*.