Nuxt 站点地图在 sitemap.xml 生成期间为动态路由添加默认的lastmod

问题描述 投票:0回答:1

我正在为基于

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

	
vue.js nuxt.js seo sitemap xml-sitemap
1个回答
0
投票
如果文件中存在,则直接添加,如果不存在,则添加最新或当前日期时间
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 站点地图文档

推断出来(强调我的):

<lastmod>

应反映页面上次重大更新的日期和时间
。例如,页面上主要内容、结构化数据或链接的更新通常被认为是重要的,但版权日期的更新则不然。

但在《搜索引擎杂志》文章
“Google 的 Gary Illyes:Lastmod 信号是二进制”

(强调我的)中得到了进一步澄清和扩展:

Google 要么接受网站站点地图中提供的最新修改日期为准确,要么忽略它们。

这种二进制方法强调了正确实现lastmod标签的必要性,并且

仅在进行有意义的更改时指定日期

最后,如果您坚持为标签页面设置
<lastmod>

值,我建议使用每个标签页面中列出的最新文章的发布日期,因为(在通用博客逻辑中)标签页面会自动更新每次将文章添加到标签时。然而,这将需要更多的工作,而在 SEO 方面却几乎没有任何收获。

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.