Zoekmachines lezen HTTP-codes als instructies. Verkeerde codes lekken linkkracht of houden dode pagina's in de index.
Permanente verhuizingen gaan in next.config.mjs (geeft 308, door Google behandeld als 301):
// next.config.mjs
export default {
async redirects() {
return [
{
source: "/old-blog/:slug",
destination: "/blog/:slug",
permanent: true,
},
];
},
};
Redirects in de app: kies de functie die bij de semantiek past:
import { redirect, permanentRedirect, notFound } from "next/navigation";
// 307 — tijdelijk (inlogpoorten, A/B-routing)
redirect("/login");
// 308 — permanent (slug is veranderd, oude URL moet kracht doorgeven)
permanentRedirect(`/blog/${post.newSlug}`);
// Echte 404 met je eigen UI uit not-found.tsx
if (!post) notFound();
Regels voor een schone index:
- Nul redirectketens: oud → ouder → actueel verspilt crawlbudget en verwatert signalen. Verwijs altijd rechtstreeks door naar de eind-URL.
- Ontbrekende content geeft 404, geen "niets gevonden"-pagina met code 200 (soft 404, die Google in Search Console markeert).
- Kies één URL-vorm en handhaaf die: met of zonder slash aan het eind (
trailingSlashin de config), kleine letters, geen duplicaten tussen www en non-www (redirect op edge- of DNS-niveau). - Verander je een slug, voeg dan de redirect in dezelfde PR toe. Redirects achteraf reconstrueren gebeurt nooit.
Wissel je van platform? Het volledige draaiboek (inventaris, redirectmap, pariteitscontrole en monitoring van de lancering) staat in het onderwerp SEO-migratie.
Checklist:
- Alle oude adressen verwijzen met 308/301 rechtstreeks door naar de bestemming (geen ketens)
- Eigen
not-found.tsxdie daadwerkelijk 404 teruggeeft - Eén canonieke URL-vorm (slash, hoofdletters, host) op de hele site
- Een slugwijziging gaat altijd samen met zijn redirect
