第9章:Nuxt的SEO实践

1. 引言

Nuxt框架在SEO方面的优势主要体现在以下几个方面:

  1. 服务器端渲染(SSR): Nuxt默认支持SSR,这意味着搜索引擎爬虫可以直接看到完整的页面内容,而不需要执行JavaScript。
  2. 内置的元标签管理: Nuxt提供了比Next更简单的API来管理head标签,包括title, meta描述等关键SEO元素。
  3. 静态站点生成(SSG): 通过nuxt generate命令,可以生成完全静态的网站,进一步提高了性能和SEO友好度。

2. Nuxt内置的SEO功能

Nuxt框架内置了多个强大的SEO工具,让开发者可以轻松地优化他们的应用程序。让我们详细了解这些功能:

useHead 和 useSeoMeta 组合式函数

Nuxt有2个组合式函数,使得管理头部元标签变得更加简单和灵活:

  • useHead: 这个函数允许你动态设置head标签的内容。

useHead({ title: 'My Amazing Site', meta: [{ name: 'description', content: 'This is my amazing site built with Nuxt 3' }], link: [{ rel: 'canonical', href: 'https://example.com' }] })

  • useSeoMeta: 这个函数专门用于设置SEO相关的元标签。

useSeoMeta({ title: 'My Amazing Site', ogTitle: 'My Amazing Site - The Best Site Ever', description: 'This is my amazing site built with Nuxt 3', ogDescription: 'Experience the best site ever built with Nuxt 3', ogImage: 'https://example.com/image.jpg' })

动态元标签管理

Nuxt允许你根据页面内容或路由动态地更新元标签。这对于创建独特的、针对每个页面优化的元描述和标题非常有用。

useSeoMeta({ title: 'My Amazing Site', ogTitle: 'My Amazing Site - The Best Site Ever', description: 'This is my amazing site built with Nuxt 3', ogDescription: 'Experience the best site ever built with Nuxt 3', ogImage: 'https://example.com/image.jpg' })

自动生成规范链接(canonical URLs)

Nuxt可以自动为你的页面生成规范链接,这有助于防止重复内容问题。你可以在nuxt.config.js中配置这个功能:

export default defineNuxtConfig({ app: { head: { link: [{ rel: 'canonical', href: 'https://example.com' }] } } })

这些内置功能为Nuxt应用提供了坚实的SEO基础。在下一节中,我们将探讨如何使用@nuxtjs/seo模块来进一步增强你的SEO策略。

3. @nuxtjs/seo 模块

@nuxtjs/seo 是一个功能强大的 Nuxt.js 模块,专门用于优化网站的搜索引擎表现。它提供了一套全面的 SEO 工具,使开发者能够轻松实现各种 SEO 最佳实践。

功能介绍和使用方法

@nuxtjs/seo 模块主要提供以下功能:

  • 自动生成和管理元标签
  • 创建结构化数据(Schema.org)
  • 生成站点地图(Sitemap)
  • 配置 robots.txt
  • 提供动态 SEO 规则生成

要使用 @nuxtjs/seo 模块,首先需要安装:

npm install @nuxtjs/seo

然后在 nuxt.config.ts 文件中添加模块:

export default defineNuxtConfig({ modules: ['@nuxtjs/seo'] })

在 nuxt.config 中配置 SEO

@nuxtjs/seo 模块允许你在 nuxt.config.ts 中直接配置 SEO 设置。

site 配置

site 配置定义了网站的基本信息,这是在使用nuxtjs/seo必须的:

export default defineNuxtConfig({ site: { url: 'https://example.com', name: 'My Awesome Site', description: 'This is my awesome website', defaultLocale: 'en', enabled: true, debug: false, indexable: true, trailingSlash: false } })

主要参数说明:

  • url: 网站的规范 URL
  • name: 网站名称
  • description: 网站描述
  • defaultLocale: 默认语言
  • enabled: 是否启用 site 配置(默认为 true)
  • debug: 是否启用调试模式(默认为 false)
  • indexable: 控制网站是否可以被搜索引擎索引(默认在生产环境为 true)
  • trailingSlash: 控制 URL 是否应该包含尾部斜杠(默认为 false)

schemaOrg 配置

schemaOrg 配置用于生成结构化数据也就是ld-json:

export default defineNuxtConfig({ schemaOrg: { identity: { type: 'Organization', name: 'Example Company', url: 'https://example.com', logo: 'https://example.com/logo.png' }, defaults: true, minify: true, reactive: false, enabled: true, debug: false } })

主要参数说明:

  • identity: 定义网站或组织的身份信息
  • defaults: 是否启用默认的 Schema.org 设置(默认为 true)
  • minify: 是否压缩 Schema.org 输出(默认在生产环境为 true)
  • reactive: 是否启用客户端反应性(默认在开发环境或非 SSR 模式下为 true)
  • enabled: 是否启用 Schema.org(默认为 true)
  • debug: 是否启用调试模式(默认为 false)

robots.txt 配置

@nuxtjs/seo 模块允许你配置 robots.txt 文件:

export default defineNuxtConfig({ robots: { UserAgent: '*', Disallow: '/private', Allow: '/', Sitemap: 'https://example.com/sitemap.xml' } })

这将生成一个 robots.txt 文件,允许所有搜索引擎爬虫访问除 /private 目录外的所有页面,并指向你的站点地图。

sitemap 配置

站点地图配置对于帮助搜索引擎发现和索引你的网站内容至关重要,这个配置会自动帮你生成文件路由的页面,如果你需要额外的内容,就使用sources配置

添加一个Nuxt的SeverApi返回额外的结果。

export default defineNuxtConfig({ sitemap: { enabled: true, sortEntries: true, sources: ['/api/sitemap-urls'], excludeAppSources: false, autoLastmod: true, sitemaps: false, defaultSitemapsChunkSize: 1000, include: ['/**'], exclude: ['/admin/**'], xsl: '/__sitemap__/style.xsl', discoverImages: true, discoverVideos: true, sitemapName: 'sitemap.xml', cacheMaxAgeSeconds: 600, sitemapsPathPrefix: '/__sitemap__/', debug: false } })

主要参数说明:

  • enabled: 是否生成站点地图(默认为 true)
  • sortEntries: 是否对站点地图条目进行排序(默认为 true)
  • sources: 用于站点地图的数据源

  • autoLastmod: 是否自动检测每个 URL 的最后修改日期(默认为 false)
  • sitemaps: 是否生成多个站点地图(默认为 false)
  • include和 exclude: 用于过滤要包含或排除的路由
  • discoverImages和 discoverVideos: 是否在预渲染时发现路由中的图片和视频(默认为 true)
  • cacheMaxAgeSeconds: 站点地图的缓存时间(默认为 600 秒)
  • debug: 是否启用调试模式(默认为 false)

4. Nuxt Content

内容是SEO的核心,Nuxt提供了强大的工具来帮助你创建和管理SEO友好的内容。

使用Nuxt Content模块管理SEO友好的内容

Nuxt Content模块是一个强大的文档驱动模块,它可以帮助你轻松管理和呈现Markdown、JSON、YAML、XML和CSV文件。

  1. 安装Nuxt Content:npm install @nuxt/content

  2. 在nuxt.config.ts中配置:

export default defineNuxtConfig({ modules: ['@nuxt/content'] })

3. 创建SEO友好的内容:

sitemap: loc: /agreement/community-guidelines title: 'My Amazing Blog Post' description: 'This is a blog post about amazing things' date: '2023-05-20'

这个sitemap的配置项,会自动把这个链接添加到Sitemap中。

  1. 在组件中使用内容:

{{ article.title }}

{{ article.description }}

5. 常见SEO问题及解决方案

处理重复内容

  1. 使用规范链接(canonical URLs):

sitemap: loc: /agreement/community-guidelines title: 'My Amazing Blog Post' description: 'This is a blog post about amazing things' date: '2023-05-20'

2. 实现适当的分页策略:

`

`

管理404和301重定向

  1. 创建自定义404页面:

创建pages/404.vue文件:

  1. 实现301重定向:

在nuxt.config.ts中配置重定向:

export default defineNuxtConfig({ nitro: { handlers: [ { route: '/old-page', handler: (event) => { event.node.res.writeHead(301, { Location: '/new-page' }) event.node.res.end() } } ] } })

## 解决JavaScript渲染内容的SEO挑战

  1. 使用服务器端渲染(SSR):

    Nuxt默认支持SSR,确保搜索引擎可以看到完整的页面内容。

  2. 对于动态内容,使用useFetch或useAsyncData:

  3. 使用组件包裹仅客户端渲染的内容:

  4. 结论

Nuxt的Seo其实非常的方便,相对Next都是配置形的,开发体验非常的好。

欢迎加入群聊,我们一起讨论一些更有趣的技术、商业、闲聊。

Nuxt的SEO实践的更多相关文章

  1. 需要考虑的9个SEO实践

    搜索引擎优化重要吗?我们知道,网站设计是把屏幕上平淡无奇变成令人愉快的美感,更直观地辨认信息.这也是人与人之间在沟通想法,这样的方式一直在演变. 穴居人拥有洞穴壁画,古埃及人有象形文字,现代人有网页设 ...

  2. SEO 在 SPA 站点中的实践

    背景 观察基于 create-react-doc 搭建的文档站点, 发现网页代码光秃秃的一片(见下图).这显然是单页应用 (SPA) 站点的通病 -- 不利于文档被搜索引擎搜索 (SEO). 难道 S ...

  3. 国际化SEO优化的最佳实践

    作者:Kristopher Jones 翻译 :吴祺深 欢迎访问网易云社区,了解更多网易技术产品运营经验. 让我们来说一下hreflang属性.如果你还没有关掉这个页面,那么你已经完成了这个教程最重要 ...

  4. seo是什么职业

    SEO(Search Engine Optimization)汉译为搜索引擎优化.seo从业者首要工作就是优化网站,使其符合搜索引擎的基本规律和满足用户的需求,进而获得大量的用户访问.SEO职业属于一 ...

  5. Wordpress SEO对策(译)

    原文link http://netaone.com/wp/wordpress-seo-plugin/ 统一管理SEO对策的设定能够统一管理SEO相关设定的插件:All in One SEO Pack. ...

  6. 罪恶的SEO优化

    1. 基础概念开始 SEO,搜索引擎优化.概括来说就是针对分析搜索引擎的网站收录以及评价规律,来对网站的结构,内容以及其他因素作出一些合理调整,使得网站更容易被搜索引擎收录,并且能够尽量排在搜索引擎自 ...

  7. 我眼中的SEO——略读一些SEO书后

    近些日子一直在看一些SEO方面的书.为人有些浮躁,读SEO实在读不出太大营养,除了第一本书外,之后的书就是在不停地向后翻页.没有过太具体的实践,现在就来写一下我眼中的SEO.还希望各位多多指教. 1. ...

  8. nuxt+高德地图实现多边形区域检索

    我已经放弃百度地图了,为什么呢? 原因一: 百度地图api太乱不容易查阅 原因二: 百度给出的案例太少,可参考项太少 第三点也是最重要的,百度地图花钱,百度地图花钱,百度地图花钱, 很荣幸,作为国内唯 ...

  9. 提升站点SEO的7个建议

    1.使用HTTPS 谷歌曾发公告表示,使用安全加密协议(HTTPS),是搜索引擎排名的一项参考因素. 所以,在域名相同情况下,HTTPS站点比HTTP站点,能获得更好的排名. 在网络渠道分发或合作上, ...

  10. 3xx HTTP状态码的终极指南

    前言 如果你在管理一些网站,那么对HTTP重定向的理解对于可靠的网站性能至关重要.在这篇文章中,我们将全面了解一下3xx HTTP状态码,从这里你可以了解它们是如何工作的,如何更好地管理它们,以及它们 ...

随机推荐

  1. CF1693F题解

    备注 发表时间:2023-06-17 21:51 前言 yny 学长来 cdqz 讲课,写一篇讲课的题的题解纪念一下. 题意 给你一个 01 序列,有以下操作: 选择一段区间 设 \(cnt_0,cn ...

  2. 『Python底层原理』--Python字符串的秘密

    在现代编程中,字符串是不可或缺的数据类型. 无论是处理用户输入.文件读写还是网络通信,字符串都扮演着核心角色. 然而,字符串的处理并非简单地将字符拼接在一起,它涉及到字符集.编码以及编程语言的底层实现 ...

  3. Vulnhub-FristiLeaks_1.3

    一.靶机搭建 选择扫描虚拟机 选择路径即可 二.信息收集 靶机信息 产品名称:Fristileaks 1.3 作者:Ar0xA 发布日期: 2015 年 12 月 14 日 目标:获取root(uid ...

  4. 又一国产AI爆火!Manus强势炸场,邀请码申请方法,看这一篇就够了!

    3月6日凌晨,一款名为Manus的国产AI产品横空出世,迅速霸榜社交平台热搜.其内测邀请码在二手交易平台被炒至5万元天价,甚至出现标价10万元的卖家,我的个乖乖啊. 究竟是什么让Manus如此火爆?今 ...

  5. PyCharm一直indexing,且永不停止。

  6. [Qt 基础-03] QRadioButton

    QRadioButton基础 本文主要根据QT官方帮助文档以及日常使用,简单的介绍一下QRadioButton的功能以及使用 文章目录 QRadioButton基础 简介 autoExclusive ...

  7. Docker 运行命令

    停止所有的容器 docker stop $(docker ps -aq) 启动所有的容器 docker start $(docker ps -aq) 停止容器 docker stop <容器Na ...

  8. Linux之SELinux的开启、关闭。

    SELinux简介 SELinux 是Security-Enhanced Linux的简写,意指安全增强的linux.它不是用来防火墙设置的.但它对Linux系统的安全很有用.Linux内核(Kern ...

  9. Jenkins合并代码Git报错处理过程

    #jenkins合并代码时候报错内容#10:36:08 ! [rejected] HEAD -> master (non-fast-forward)#10:36:08 error: failed ...

  10. 【数据结构与算法】不同路径 III:使用哈密尔顿路径算法实现

    [数据结构与算法]不同路径 III:使用哈密尔顿路径算法实现 Java 不同路径 III https://leetcode-cn.com/problems/unique-paths-iii/ 解题思路 ...