Alle Leitfäden

Diese Leitfäden zur Behebung sind in englischer Sprache verfasst.

Sitemap

Diese Prüfung trägt 4 % des Scores.

How to fix your sitemap: missing sitemap.xml, invalid XML, empty urlset, missing lastmod, stale entries, sitemap-index handling, content type, and the 50k URL limit.

No sitemap found

ax-audit looked for a sitemap in two places and didn't find one:

  • The Sitemap: directive in /robots.txt
  • The default fallback path /sitemap.xml

Publish a minimal sitemap and reference it from robots.txt:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://your-site.com/</loc>
    <lastmod>2026-04-30</lastmod>
  </url>
  <url>
    <loc>https://your-site.com/about</loc>
    <lastmod>2026-04-15</lastmod>
  </url>
</urlset>
# robots.txt
User-agent: *
Allow: /

Sitemap: https://your-site.com/sitemap.xml
Framework helpers
Next.js: use next-sitemap or App Router sitemap.ts. Astro: @astrojs/sitemap. Hugo, Jekyll, and most static generators ship sitemaps out of the box.

Sitemap is not valid XML

The response at the sitemap URL doesn't start with <?xml, <urlset>, or <sitemapindex>. Most often this means a 200 HTML error page is being served instead of the sitemap.

  • Test directly: curl -i https://your-site.com/sitemap.xml
  • Make sure the route doesn't fall through to your SPA index.html.
  • Validate the output at xml-sitemaps.com/validate.

Unexpected Content-Type

Serve sitemaps with Content-Type: application/xml (or text/xml). A wrong content type (like text/html) causes some crawlers to discard the file before parsing.

# Nginx
location = /sitemap.xml {
  default_type application/xml;
}

# Express / Next.js custom server
res.setHeader('Content-Type', 'application/xml; charset=utf-8');

Empty <urlset>

Your sitemap is well-formed XML but contains no <url> entries. Add at least one URL per page you want crawlers to discover, at minimum the homepage.


Empty <sitemapindex>

A sitemap-index file must reference at least one child sitemap:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://your-site.com/sitemap-pages.xml</loc>
    <lastmod>2026-04-30</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://your-site.com/sitemap-blog.xml</loc>
    <lastmod>2026-04-29</lastmod>
  </sitemap>
</sitemapindex>

Child sitemaps unreachable

Your sitemap-index references child sitemaps that returned non-2xx responses. Crawlers may give up after the first failure and never reach the rest of your URLs.

  • Verify each <loc> URL inside the index returns 200 OK.
  • Use absolute URLs only; relative <loc> values are invalid per the sitemap spec.
  • If a child sitemap is gated by auth or geo-blocked, move it outside the public sitemap.

Low <lastmod> coverage

Less than half of your <url> entries declare a <lastmod>. AI agents and search crawlers use lastmod to decide what to re-fetch; without it, every URL looks equally fresh (or equally stale).

<url>
  <loc>https://your-site.com/blog/post-1</loc>
  <lastmod>2026-04-30</lastmod>
</url>

Use ISO 8601 dates (YYYY-MM-DD or full timestamps). Most sitemap generators auto-populate this from the page's git history or filesystem mtime.


Stale <lastmod>

The newest <lastmod> in your sitemap is more than a year old. Crawlers interpret this as "nothing has changed on the site," which slows or stops re-indexing.

  • Regenerate the sitemap on every deploy.
  • Touch the lastmod when content actually changes; don't blanket-update every URL on every build (crawlers learn to ignore that).

Above the 50,000 URL limit

The sitemaps.org spec caps a single sitemap at 50,000 URLs. Split into a sitemap-index pointing to multiple smaller sitemaps:

/sitemap.xml              -- index
/sitemap-pages.xml        -- 1 to 5,000 marketing pages
/sitemap-blog-2025.xml    -- 1 to 30,000 blog posts from 2025
/sitemap-blog-2026.xml    -- ongoing blog posts

Above the 50 MB size limit

Same fix as above: split the sitemap. The 50 MB limit applies to the uncompressed file size. You can also serve sitemaps gzipped (sitemap.xml.gz) to reduce transfer size, but the uncompressed limit still applies.