A sitemap.xml helps search engines find and understand your website pages easily. It improves your site's visibility on search results.
Sitemap.xml generation in NextJS
export async function GET() { const baseUrl = 'https://example.com'; const routes = ['/', '/about', '/contact']; const sitemap = `<?xml version="1.0" encoding="UTF-8"?>\n<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n${routes.map(route => ` <url>\n <loc>${baseUrl}${route}</loc>\n </url>`).join('\n')}\n</urlset>`; return new Response(sitemap, { headers: { 'Content-Type': 'application/xml' } }); }
This code exports a GET function for a Next.js route that returns XML content.
The sitemap XML must follow the standard sitemap protocol for search engines.
const routes = ['/', '/blog', '/products']; const sitemap = `<?xml version="1.0" encoding="UTF-8"?>\n<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n${routes.map(route => ` <url>\n <loc>https://example.com${route}</loc>\n </url>`).join('\n')}\n</urlset>`;
return new Response(sitemap, { headers: { 'Content-Type': 'application/xml' } });
This Next.js route handler generates a sitemap.xml dynamically listing four pages. When you visit this route, it returns the sitemap XML with correct headers.
export async function GET() { const baseUrl = 'https://mywebsite.com'; const routes = ['/', '/about', '/blog', '/contact']; const sitemap = `<?xml version="1.0" encoding="UTF-8"?>\n<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n${routes.map(route => ` <url>\n <loc>${baseUrl}${route}</loc>\n </url>`).join('\n')}\n</urlset>`; return new Response(sitemap, { headers: { 'Content-Type': 'application/xml' } }); }
Make sure the sitemap URL is accessible publicly so search engines can find it.
Update the routes list whenever you add or remove pages to keep the sitemap accurate.
You can automate sitemap generation for dynamic routes by fetching data inside the GET function.
Sitemap.xml helps search engines find your pages faster.
In Next.js, create a GET route that returns XML with page URLs.
Set the response header to 'application/xml' for correct recognition.