问题描述
我想创建一个 API 来发送动态站点地图 XML。因为我是写博文的,所以我希望每次在我的博文中发一篇文章的时候,这个都会自动添加到XML文件中。
这是我使用 Next.js 的 API 代码
enum URLFrequence {
ALWAYS = 'always',HOURLY = 'hourly',DAILY = 'daily',WEEKLY = 'weekly',MONTHLY = 'monthly',YEARLY = 'yearly',NEVER = 'never'
}
const generateXMLURL = (
url: string,date: string,frequence: URLFrequence,priority: number = 0.5
) => `
<url>
<loc>${url}</loc>
<lastmod>${date}</lastmod>
<changefreq>${frequence}</changefreq>
<priority>${priority}</priority>
</url>
`;
export default async (req: NextApiRequest,res: NextApiResponse) => {
const prismicQuery: string[] = [
Prismic.Predicates.at('document.type',PrimsicTypes.BLOG_POSTS)
];
const { results }: ApiSearchResponse = await Prismicclient(req).query(
prismicQuery,{
fetchLinks: ['authors.name','categories.name'],orderings: [`[my.${PrimsicTypes.BLOG_POSTS}.creation_date desc]`],pageSize: BLOG_PAGE_MAX
}
);
const lastWeek: number = new Date().setDate(new Date().getDate() - 7);
const yesterday: number = new Date().setDate(new Date().getDate() - 1);
const today: number = new Date().getTime();
const urls: string[] = [
generateXMLURL(
'https://www.lechronograph.com',getRandomDate(lastWeek,today),URLFrequence.MONTHLY,1
),generateXMLURL(
'https://wwww.lechronograph.com/bog',getRandomDate(yesterday,URLFrequence.DAILY,0.5
),generateXMLURL(
'https://www.lechronograph.com/mentions-legales','2021-01-01',URLFrequence.YEARLY,0.2
),generateXMLURL(
'https://www.lechronograph.com/lechronograph-inside','2021-02-01',0.4
),generateXMLURL(
'https://www.lechronograph.com/investissement',URLFrequence.WEEKLY,0.4
)
];
for (const result of results) {
urls.push(
generateXMLURL(
`https://www.lechronograph.com/blog/articles/${result.data.slug}`,0.5
)
);
}
const xmlTemplate: string = `
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${urls.join('')}
</urlset>
`;
res.setHeader('Content-Type','application/xml');
res.send(xmlTemplate);
};
当我访问我的网站时:https://www.lechronograph.com/api/sitemap 我可以看到站点地图。但是当我把它提交给谷歌时。有一个问题,我不知道它来自哪里。该错误表明无法读取 XML 文件
您认为我的 XML 文件有问题吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)