我正在按照本指南为NextJs 13.4.6 https://claritydev.net/blog/nextjs-dynamic-sitemap-pages-app-directory创建动态站点Map
我遇到的问题是文章的底部是它与NextJS 13.3及以上版本的站点Map有关的代码-但是,它不起作用。
这是我的sitemap的代码,它根据我的路由和来自cms的博客文章返回一个URL对象(我从我们的API中获取博客文章数据)。
interface ApiResponseEntries {
data: TransformedEntry[];
status: number;
}
// This will change when we have a production URL
const rootUrl = "http://localhost:3000";
export default async function sitemap() {
try {
const url = "/api/routes/contentful/entries";
const response: AxiosResponse<ApiResponseEntries> = await axios.get(url);
const blogPostEntries: TransformedEntry[] = response.data.map(
(entry: TransformedEntry) => {
return entry.contentType === "blogPost";
}
);
const blogPosts = blogPostEntries.map((entry: TransformedEntry) => ({
url: `${URL}/blog/${entry.id}`,
lastModified: entry.updatedAt,
}));
const routes = ["/", "/blog"].map((route) => ({
url: `${URL}${route}`,
lastModified: new Date().toISOString(),
}));
return [...routes, ...blogPosts];
} catch (error) {
console.error("Error", error);
}
}
字符串
问题是,除非我读错了这篇文章,否则我不明白这是如何为谷歌提供网站Map的,如果我去localhost:3000/sitemap.xml,只有一个404页面...这是有道理的,因为我从来没有在任何地方定义过XML。
有谁知道新版本的NextJs 13如何让这个动态站点Map在那个url端点上返回?或者可以举出例子来说明它是如何做到的。
谢谢你,谢谢
1条答案
按热度按时间xriantvc1#
尝试将
URL
替换为constrootUrl
。字符串
让我现在如果它工作