Gatsby 盖茨比网站地图插件-只包括某些URL?
我知道我可以用Gatsby 盖茨比网站地图插件-只包括某些URL?,gatsby,sitemap.xml,Gatsby,Sitemap.xml,我知道我可以用options对象中的exclude数组用gatsby plugin sitemap排除URL,但是有没有办法要求所有URL都有一些字符串?主要希望要求添加到站点地图的URL包含en-us或es-us { resolve: `gatsby-plugin-sitemap`, options: { exclude: [`all urls must contain "en-us" or "es-us"`], }, }, 谢谢 更新 多亏了@Ma
options
对象中的exclude
数组用gatsby plugin sitemap
排除URL,但是有没有办法要求所有URL都有一些字符串?主要希望要求添加到站点地图的URL包含en-us
或es-us
{
resolve: `gatsby-plugin-sitemap`,
options: {
exclude: [`all urls must contain "en-us" or "es-us"`],
},
},
谢谢
更新强>
多亏了@MarkoCen,我才得以工作。我只是用正则表达式在我的网站地图中添加我想要的URL。如果有人感兴趣,这里有代码。请注意,我必须使用这种方法:
{
resolve: `gatsby-plugin-sitemap`,
options: {
query: `
{
site {
siteMetadata {
siteUrl
}
}
allSitePage {
edges {
node {
path
}
}
}
}`,
serialize: ({ site, allSitePage }) => {
const links = [];
for (let i = 0; i < allSitePage.edges.length; i++) {
const { path } = allSitePage.edges[i].node;
if (
/products|404|unsupported|account/.test(path)
) {
continue;
} else if (/en-us|es-us/.test(path)) {
links.push({
url: site.siteMetadata.siteUrl + path,
changefreq: 'daily',
priority: 0.8,
});
}
}
return links;
},
},
},
{
解析:`gatsby插件站点地图`,
选项:{
查询:`
{
场地{
站点元数据{
站点URL
}
}
所有站点页面{
边缘{
节点{
路径
}
}
}
}`,
序列化:({site,allSitePage})=>{
常量链接=[];
for(设i=0;i
您可以使用查询
和序列化
选项从头开始构建站点地图
{
解析:`gatsby插件站点地图`,
选项:{
输出:`/sitemap.xml`,
//使用此查询获取站点地图链接所需的所有数据
查询:`
{
场地{
站点元数据{
站点URL
}
博客{
标题
}
...
}
`,
序列化:({site,blogs})=>{
常量链接=[];
blogs.forEach(blog=>{
//添加带有en-us前缀的链接
links.push({
url:`${site.sitematadata.siteUrl}/en-us/blog/${blog.title}`,
changefreq:“每日”,
优先级:0.8,
});
//添加带有es us前缀的链接
links.push({
url:`${site.sitematadata.siteUrl}/es us/blog/${blog.title}`
changefreq:“每日”,
优先级:0.8,
});
})
//插件将使用返回的链接生成站点地图,所以只包含您想要显示的链接!
返回链接;
}
},
},
您可以使用查询
和序列化
选项从头开始构建站点地图
{
解析:`gatsby插件站点地图`,
选项:{
输出:`/sitemap.xml`,
//使用此查询获取站点地图链接所需的所有数据
查询:`
{
场地{
站点元数据{
站点URL
}
博客{
标题
}
...
}
`,
序列化:({site,blogs})=>{
常量链接=[];
blogs.forEach(blog=>{
//添加带有en-us前缀的链接
links.push({
url:`${site.sitematadata.siteUrl}/en-us/blog/${blog.title}`,
changefreq:“每日”,
优先级:0.8,
});
//添加带有es us前缀的链接
links.push({
url:`${site.sitematadata.siteUrl}/es us/blog/${blog.title}`
changefreq:“每日”,
优先级:0.8,
});
})
//插件将使用返回的链接生成站点地图,所以只包含您想要显示的链接!
返回链接;
}
},
},
谢谢,这对我们来说绝对是正确的方法。我使用了您的想法并对其进行了一些调整。直到全局模式包含在内,所以我尝试“排除既不包含en-us也不包含es-us的路径”可能不可能。谢谢,这对我们来说绝对是正确的方法。我使用了你的想法并对其进行了一些调整。直到全局模式包含在内,所以我尝试“排除既不包含en-us也不包含es-us的路径”可能是不可能的。