Tämä sivusto pyöri vuosia WordPressillä. Kun lopulta katsoin, mitä siellä oikeasti oli, lista oli lyhyt: yksi blogikirjoitus vuodelta 2019, Tietoa minusta -sivu ja yhteydenottolomake. Sen lisäksi tietokanta, PHP, teema, liuta lisäosia ja jatkuva päivitysrumba, jotta kaikki pysyisi tietoturvallisena.
Siinä ei ollut mitään järkeä. Sivusto, joka muuttuu muutaman kerran vuodessa, ei tarvitse palvelinta, joka rakentaa jokaisen sivun uudelleen jokaiselle kävijälle.
Mitä tilalle
Uusi sivusto on rakennettu samalla tavalla kuin Mobalin sivut:
- React Router 7 framework-tilassa,
ssr: false. Jokainen sivu käännetään buildissa valmiiksi staattiseksi HTML-tiedostoksi, eikä tuotannossa ole palvelinta lainkaan. - Kirjoitukset ovat markdown-tiedostoja git-repossa. Uusi kirjoitus on yksi uusi tiedosto ja
git push. - Cloudflare tarjoilee valmiit tiedostot suoraan, joten tietokantaa, kirjautumista tai päivitettäviä lisäosia ei ole.
- RSS-syöte ja sitemap syntyvät samassa buildissa suoraan kirjoituksista.
Sivujen lista on eksplisiittinen. Esirenderöinnin konfiguraatio lukee kirjoitukset hakemistosta, joten uusi tiedosto päätyy sivustolle ilman muita muutoksia:
export default {
appDirectory: 'src/app',
ssr: false,
prerender() {
const pages = Object.values(PAGES).flatMap((paths) => LANGS.map((lang) => paths[lang]));
const posts = LANGS.flatMap((lang) =>
readdirSync(`content/blog/${lang}`)
.filter((file) => file.endsWith('.md'))
.map((file) => postPath(lang, file.replace(/\.md$/, ''))),
);
return [...pages, ...posts, ...LANGS.map(rssPath), '/sitemap.xml'];
},
} satisfies Config;
Kaksi kieltä
Sivusto on nyt sekä suomeksi että englanniksi. Suomi on juuressa ja englanti /en-polun alla. Kirjoitusta ei ole pakko kääntää, mutta jos käännös on olemassa, molemmat versiot merkitään samalla translationKey-arvolla. Silloin kielivalitsin vie suoraan käännökseen, ja hakukoneet saavat oikeat hreflang-tiedot. Tämä kirjoitus on ensimmäinen tällainen pari.
Vanhat osoitteet
WordPressin osoitteet olivat muotoa /2019/06/13/kirjoituksen-nimi/. Niitä ei haluta rikkoa, joten jokainen vanha osoite ohjataan pysyvällä uudelleenohjauksella (301) uuteen. Tuntemattomat osoitteet palauttavat aidon 404:n eivätkä etusivua, koska niin sanottu soft-404 on hakukoneiden silmissä huono juttu.
Lopputulos
Sivu latautuu nopeammin, sitä ei tarvitse päivitellä, eikä siinä ole hyökkäyspintaa, josta murehtia. Ja ulkoasukin päivittyi samalla tälle vuosituhannelle.