深度学习Sitemap(NuxtSeo)
今天要做的是一个sitemap,这个东西,接到的任务是,做一个差不多这样的一个东西出来
然后领导告诉我,你的这种文件是不会被扫描到的,你得想办法,让他出现在这里面。接到任务的我,先去了解一下什么是sitemap!
说这么多,什么是Sitemap呢?
用于生成符合最佳实践的XML网站地图。网站地图有助于搜索引擎更好地索引你的网站,提高网站的SEO性能。Nuxt Sitemap支持单页或多个子页的网站地图,自动处理最后修改时间、图片发现等,同时与Nuxt I18n和Nuxt Content等其他Nuxt模块无缝集成。
说白了,就是网页进行搜索的时候,sitemap 就是给搜索引擎看的“网站页面清单”,让它们能更快、更全地收录你的网站内容,大概里面就是一个这样的内容。
我写了一会,我跑了一下我的项目!
他显示的是这样的??为什么呢?我的.vue后缀的文件为什么没被显示呢?
我一顿找啊!最终找到答案:
Sitemap 列出的是 URL,而不是 .vue 文件本身
Sitemap 的主要作用是告诉搜索引擎您的网站上有哪些可访问的网页地址 (URLs),而不是直接列出您项目中的源代码文件(如 .vue 文件)。
因为我的.vue文件都是组件挂载在app.vue文件上的,所以并没有被识别,这我就理解了!
但是我现在还是想让我的.vue文件被识别我该怎么做呢!?
经过我的一番调查!我又深入的理解了一下这个东西!
首先sitemap,这个东西会按层查找你的东西
这个en和ch就是我的第一层,能找到的路由!我点击en进去,能找到这么多路由,这都是我的二级路由,这就明白了!
但是我的问题又来了,我看见en路由下面有这么多东西,但是我的ch下面却没有?为什么呢?
我又是一顿查找!!最后发现了问题
export default defineNuxtConfig({compatibilityDate: "2025-05-15",devtools: { enabled: true },modules: ["@nuxtjs/i18n", "@nuxtjs/sitemap"],i18n: {locales: [{ code: "en", name: "English", file: "en.json" },{ code: "ch", name: "简体中文", file: "ch.json" },],defaultLocale: "en",langDir: "locales/",lazy: true,strategy: "prefix",},site: {url: 'http://localhost:3000/', },sitemap: {urls: async () => {const storageValues = ['128gb', '256gb', '512gb'];const locales = ['en', 'ch']; const dynamicPaths: string[] = [];locales.forEach(locale => {// 为 pages/[storage].vue 生成带语言前缀的 URL// storageValues.forEach(storage => {// dynamicPaths.push(`/${locale}/${storage}`);// });// 为 pages/newPage/[storage].vue 生成带语言前缀的 URLstorageValues.forEach(storage => {dynamicPaths.push(`/${locale}/newPage/${storage}`);});});return dynamicPaths;}},});
因为在配置文件中,我并没有配置这个东西,所以拿不到en和ch这种一级路由给的东西,我配置之后就可以了!!这样en和ch访问的东西都一样了!!也就做出了我领导要的效果啦~哈哈哈哈哈