Deel 5 van 22

sitemap.ts en robots.ts: bestandsconventies in plaats van handmatige XML

sitemap.ts en robots.ts: bestandsconventies in plaats van handmatige XML

De App Router genereert beide uit getypeerde code. Dat is het einde van verouderde statische XML:

// app/sitemap.ts
import type { MetadataRoute } from "next";

export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const posts = await getPosts();

  const postEntries = posts.map((post) => ({
    url: `https://example.com/en/blog/${post.slug}`,
    lastModified: post.updatedAt,
    alternates: {
      languages: {
        pl: `https://example.com/pl/blog/${post.plSlug}`,
        ru: `https://example.com/ru/blog/${post.ruSlug}`,
      },
    },
  }));

  return [{ url: "https://example.com", priority: 1 }, ...postEntries];
}
// app/robots.ts
import type { MetadataRoute } from "next";

export default function robots(): MetadataRoute.Robots {
  return {
    rules: [{ userAgent: "*", allow: "/", disallow: ["/api/", "/admin/"] }],
    sitemap: "https://example.com/sitemap.xml",
  };
}

Details die ertoe doen:

  • lastModified moet de echte datum van de contentwijziging zijn, niet new Date() bij elke build. Liegen over versheid leert Google dit veld te negeren.
  • Meer dan 50.000 URL's? Gebruik generateSitemaps() om op te splitsen in meerdere bestanden.
  • Blokkeer geen CSS/JS in robots.txt: Google heeft ze nodig om de pagina te renderen.
  • Een disallow in robots.txt haalt pagina's niet uit de index, het stopt alleen het crawlen. Wil je dat een pagina niet in de resultaten verschijnt, gebruik dan noindex via metadata (robots: { index: false }) en blokkeer haar niet in robots.txt (een geblokkeerde pagina kan niet worden gelezen, dus niemand ziet de noindex).

Checklist:

  • sitemap.ts bevat alleen canonieke, indexeerbare adressen met status 200
  • lastModified weerspiegelt echte wijzigingen
  • Sitemap aangemeld in Google Search Console en Bing Webmaster Tools
  • noindex en robots.txt juist gebruikt (ze lossen verschillende problemen op)

Laat je dit liever door iemand anders doen?

Ik audit en herstel technische SEO op Next.js-websites — indexering, snelheid, hreflang en zichtbaarheid in AI-zoekmachines.

Dienst technische SEO