我正在为基于
sitemap.xml
的 Nuxt 3
网站页面生成 Nuxt Content
,一切正常,并且能够在运行 npm run generate or nuxt generate
后获得正确的站点地图。但是,我无法为动态创建的路线添加 lastmod
的默认值。我在 CodeSandBox 中创建了一个示例复制品。
我的
/content/imprint/index.md
文件如下所示:
---
title: "Imprint"
description: "Imprint/Registration information"
navigation:
linkTitle: "Imprint"
tags : ["convert", "compliance", "json"]
head:
meta:
- name: 'keywords'
sitemap:
loc: /imprint
lastmod: 2024-08-31
changefreq: monthly
priority: 1
---
我在我的
sitemap.xml
中得到以下信息,如下所示:
<url>
<loc>https://localhost:3003/imprint</loc>
<lastmod>2024-08-31</lastmod>
<changefreq>monthly</changefreq>
<priority>1</priority>
<xhtml:link rel="alternate" href="https://localhost:3003/imprint" hreflang="x-default" />
<xhtml:link rel="alternate" href="https://localhost:3003/imprint" hreflang="en" />
</url>
<url>
<loc>https://localhost:3003/tags/convert</loc>
<xhtml:link rel="alternate" href="https://localhost:3003/tags/convert" hreflang="x-default" />
<xhtml:link rel="alternate" href="https://localhost:3003/tags/convert" hreflang="en" />
</url>
<url>
<loc>https://localhost:3003/tags/compliance</loc>
<xhtml:link rel="alternate" href="https://localhost:3003/tags/compliance" hreflang="x-default" />
<xhtml:link rel="alternate" href="https://localhost:3003/tags/compliance" hreflang="en" />
</url>
<url>
<loc>https://localhost:3003/tags/json</loc>
<xhtml:link rel="alternate" href="https://localhost:3003/tags/json" hreflang="x-default" />
<xhtml:link rel="alternate" href="https://localhost:3003/tags/json" hreflang="en" />
</url>
正如我们所看到的,自从我为我的
lastmod
页面定义了 imprint/index.md
以来,我只得到了 lastmod
,但对于在 URL
中创建的所有标签或动态路由,它没有获取默认添加的 sitemap.xml
或 lastmod
。我想知道如何在生成 changeFreq
期间将默认
lastmod
值添加到所有动态 tags
路由?如果文件中存在,则直接添加,如果不存在,则添加最新或当前日期时间 sitemap.xml
我尝试将默认值添加到我的lastmod: new Date(),
:
nuxt.config.js
但这没有任何区别,我没有得到
sitemap: {
hostname: process.env.NUXT_PUBLIC_SITE_URL,
gzip: true,
trailingSlash: true,
defaults: {
changefreq: "daily",
priority: 1,
lastmod: new Date(),
},
},
的
lastmod
。如何确保/tags
中生成的所有lastmod
(包括动态路由)是否都添加了URLS
?我已经尝试过几件事:
sitemap.xml
还添加了自定义路由逻辑:
sitemap: {
hostname: process.env.NUXT_PUBLIC_SITE_URL,
trailingSlash: true,
lastmod: new Date(),
defaults: {
lastmod: new Date()
}
},
我在CodeSandBox
sitemap: {
filter ({ routes }) {
return routes.map(route => {
route.url = `${route.url}/`
route.lastmod = new Date()
return route
})
}
}
:
单击以切换“nuxt.config.js”的内容
nuxt.config.js
export default {
compatibilityDate: "2024-08-31",
modules: [
"@nuxtjs/tailwindcss",
"unplugin-fonts/nuxt",
"@nuxtjs/i18n",
"@nuxtjs/color-mode",
"@nuxt/image",
"@nuxt/content",
"@nuxtjs/sitemap",
],
ssr: true,
target: 'static',
site: {
url: process.env.BASE_URL || 'http://localhost:3000/',
name: "Test Application",
trailingSlash: true,
defaults: {
changefreq: "daily",
priority: 1,
lastmod: new Date(),
},
},
//To support and display the .md files from /content using @nuxt/content
content: {
// To highlight the code sections using the theme
highlight: {
theme: {
default: "aurora-x",
dark: "everforest-dark",
sepia: "monokai",
},
langs: ["json", "xml", "java", "shell"],
},
markdown: {
remarkPlugins: ["remark-reading-time"], //To get the reading time for each .md file in /content
anchorLinks: false, // Do not underline and highlight the h2, h3, h4 etc
}
},
//To support the dark/light mode theme using @nuxtjs/color-mode
colorMode: {
classSuffix: "",
preference: "system",
fallback: "dark",
},
app: {
head: {
link: [
{
rel: "icon",
type: "image/x-icon",
href: `/img/favicon.ico`,
},
],
},
},
buildModules: [
{
vue: {
config: {
assetDirs: ["assets", "public"],
},
},
},
],
runtimeConfig: {
apiSecret: "123",
public: {},
},
components: [
{
path: "~/components",
pathPrefix: false,
},
],
build: {
postcss: {
postcssOptions: {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
},
},
},
i18n: {
locales: [
{
code: "en",
files: ["en.json", "en-extended.json"],
},
],
lazy: true,
langDir: "./locales",
defaultLocale: "en",
},
plugins: [{ src: "@/plugins/aos", ssr: false, mode: "client" }],
};
我建议不要将
lastmod: new Date()
设置为任何类型的默认值。
如果您无法准确确定页面的最后修改日期,只需不要在 XML 站点地图中插入
lastmod
标签,即不执行任何操作:)这可以从 Google 的 XML 站点地图文档
“Google 的 Gary Illyes:Lastmod 信号是二进制”Google 要么接受网站站点地图中提供的最新修改日期为准确,要么忽略它们。<lastmod>
值
应反映页面上次重大更新的日期和时间。例如,页面上主要内容、结构化数据或链接的更新通常被认为是重要的,但版权日期的更新则不然。 但在《搜索引擎杂志》文章
这种二进制方法强调了正确实现lastmod标签的必要性,并且
仅在进行有意义的更改时指定日期。
最后,如果您坚持为标签页面设置
<lastmod>
值,我建议使用每个标签页面中列出的最新文章的发布日期,因为(在通用博客逻辑中)标签页面会自动更新每次将文章添加到标签时。然而,这将需要更多的工作,而在 SEO 方面却几乎没有任何收获。
希望这有帮助!