搜索引擎优化(SEO)与Next.js的支持

SEO介绍:Search Engine Optimization

什么是SEO

SEO 就是搜索引擎优化。SEO的目标是创建一个策略,以提高您在搜索引擎结果中的排名。排名越高,您网站的自然流量就越多,最终为您带来更多业务!

我们下面将探讨:

  • 搜索系统,以及谷歌机器人等搜索引擎机器人。

  • 拥有SEO策略可以对您的网站产生的影响。

  • 如何整合最佳SEO实践。

  • 使用 Next.js 进行爬网、索引、呈现和排名。

  • Web 性能主题,包括核心 Web 指标。

为什么SEO如此重要?

SEO是提高转化率和品牌信心的关键。更高的搜索排名位置等同于更多的自然访问者。搜索引擎自然流量 - 通过点击搜索引擎中的结果来到您网站的访问者 - 是许多商业的关键,原因有三:

  • 高质量 – 增加访客变成客户的机会。

  • 值得信赖 – 对您的品牌或使命更有信心。

  • 低成本 – 除了花费的时间和精力外,拥有良好的 SEO 实践可以带来更高的搜索引擎排名是免费的。出现在自然搜索结果的顶部位置没有直接费用。

优化的三大支柱

优化网站的过程可以分为三个主要支柱:

  • 技术 – 优化您的网站以提高抓取和网络性能。

  • 创建 – 创建内容策略以定位特定关键字。

  • 受欢迎程度 – 提高您网站的在线影响力,以便搜索引擎知道您是值得信赖的来源。这是通过使用反向链接来完成的——链接回您网站的第三方网站

SEO学科很广泛,有很多方面,但作为Next.js开发人员,第一步是了解如何通过一些最佳实践使您的Web应用程序为SEO做好准备。

搜索系统

搜索系统是你通常所说的搜索引擎(谷歌,必应,鸭鸭Go等)。它们是极其复杂的系统,可以解决技术史上一些最大的挑战。

搜索系统有四个主要职责

  • 爬行——浏览网络并解析所有网站内容的过程。这是一项艰巨的任务,因为有超过 3.5 亿个域名可用。

  • 索引——寻找存储在爬行阶段收集的所有数据的地方,以便可以访问。

  • 渲染——执行页面上的任何资源,例如可能增强网站功能和丰富网站内容的 JavaScript。这个过程不会发生在所有被抓取的页面上,有时它发生在内容被实际索引之前。如果当时没有可用资源来执行任务,则可能会在索引之后进行渲染。

  • 排名——查询数据以根据用户输入制作相关的结果页面。这是在搜索引擎中应用不同排名标准的地方,以便为用户提供实现其意图的最佳答案。

什么是网络爬虫

为了让您的网站出现在搜索结果中,Google(以及其他搜索引擎,例如 Bing、Yandex、Baidu、Naver、Yahoo 或 DuckDuckGo)使用网络爬虫来导航网站以发现网站及其网页。

不同的搜索引擎在每个国家拥有不同的市场份额。

在本指南中,我们介绍了 Google,它是大多数国家/地区最大的搜索引擎。也就是说,您可能需要查看其他搜索引擎及其指南,尤其是当您的目标客户位于中国、俄罗斯、日本或韩国时。

虽然在排名和呈现方面存在一些差异,但大多数搜索引擎在抓取和索引方面的工作方式非常相似

网络爬虫是一种模拟用户并通过网站上的链接导航以索引页面的机器人。网络爬虫使用自定义用户代理(User-Agent)来识别自己。 Google 有多种网络爬虫,但使用较多的是 Googlebot Desktop 和 Googlebot Smartphone。

以Googlebot 的工作原理为例,Googlebot 是 Google 的互联网爬虫,是搜索系统的一部分,它收集创建海量内容数据库以提供搜索结果所需的所有信息。

Googlebot 为网页编入索引的过程

该过程的一般概述如下:

  • 查找 URL:Google 从许多地方获取 URL,包括 Google Search Console、网站之间的链接或 XML 站点地图。

  • 添加到抓取队列:这些 URL 被添加到抓取队列以供 Googlebot 处理。 Crawl Queue 中的 URL 通常会在那里持续几秒钟,但视情况而定可能长达几天,特别是如果页面需要渲染、编入索引,或者——如果 URL 已经编入索引——刷新。然后页面将进入渲染队列。

  • HTTP 请求:爬虫发出 HTTP 请求以获取标头并根据返回的状态代码执行操作

  • 200 - 它抓取并解析 HTML。

  • 30X - 它遵循重定向。

  • 40X - 它将记录错误并且不加载 HTML

  • 50X - 它可能会稍后回来检查状态代码是否已更改。

  • 渲染队列:搜索系统的不同服务和组件处理 HTML 并解析内容。如果页面有一些基于 JavaScript 客户端的内容,则 URL 可能会添加到渲染队列中。渲染队列对谷歌来说成本更高,因为它需要使用更多资源来渲染 JavaScript,因此渲染的 URL 在互联网上的总页面中所占的百分比较小。其他一些搜索引擎可能不具备与 Google 相同的渲染能力,而这正是 Next.js 可以帮助您制定渲染策略的地方。

  • 准备好被索引:如果满足所有条件,页面可能有资格被索引并显示在搜索结果中。

抓取和索引

接下来我们来看看一下几个问题:

  • HTTP 状态代码基础知识。

  • 元数据以及网络爬虫在解析 Web 内容时查找的内容。

  • 如何与 Google 沟通,以便其搜索抓取工具知道您网站上何时有新内容。

  • 如何利用元机器人标签和规范链接向搜索引擎指示您想要的索引状态。

什么是HTTP 状态码(Status Codes)?

HTTP 响应状态代码指示特定 HTTP 请求是否已成功完成。有许多状态代码,但只有少数在SEO上下文中有意义。现在让我们来看看它们。

  • 200

表示请求已成功。

为了在谷歌上将页面编入索引,页面必须返回200状态码。这是您通常希望在页面中寻找的内容,以便它们获得自然流量。这是 Next.js 成功渲染页面时将设置的默认代码。

  • 301/308

HTTP 301 永久移动重定向状态响应代码指示请求的资源已最终移动到目标 URL。

这是一个永久重定向。通常,这是使用最广泛的重定向类型。

出于多种原因可以使用重定向,但最主要的是指示 URL 已从 A 点移动到 B 点。

需要重定向以确保,如果内容从一个地方移动到另一个地方,您不会失去当前和潜在的客户,并且机器人可以继续为您的网站编制索引

Next.js永久重定向默认使用308而不是301,因为它是较新的版本,被认为是更好的选择。

301和308两者间的主要区别在于301 允许将请求方法从 POST 更改为 GET,而308不允许。

您可以在 Next.js 中触发 308 重定向方法是在 'getStaticProps()' 函数中返回redirect重定向而不是 props。

export async function getStaticProps(context) {
  return {
    redirect: {
      destination: '/',
      permanent: true, // triggers 308
    },
  };
}

您还可以在 next.config.js 中设置的redirects集合: permanent: true 。

//next.config.js

module.exports = {
  async redirects() {
    return [
      {
        source: '/about',
        destination: '/',
        permanent: true, // triggers 308
      },
    ];
  },
};

  • 302

指示请求的资源已临时移动到目标 URL。

大多数情况下,302 重定向应该是 301 重定向。如果您将用户临时重定向到某个页面(例如促销页面),或者您根据位置重定向用户,则可能并非如此。

  • 404

指示服务器找不到请求的资源。

一般情况下,应使用 HTTP 301 状态代码将移动的页面重定向到新位置。如果未发生这种情况,URL 可能会返回 404 状态代码。

默认情况下,404状态代码不一定是坏的,因为如果用户碰巧访问不存在的URL,这是理想的结果,但它们不应该是页面中的常见错误,因为它可能导致搜索排名下降。

Next.js将自动为应用程序中不存在的 URL 返回 404 状态代码。

在某些情况下,您可能还希望从页面返回 404 状态代码。这时候可以通过返回以下内容来代替props来达到此目的:

export async function getStaticProps(context) {
  return {
    notFound: true, // triggers 404
  };
}

您可以通过创建 pages/404.js 创建一个在构建时静态生成的自定义 404 页面。

// pages/404.js
export default function Custom404() {
  return <h1>404 - Page Not Found</h1>;
}

  • 410

指示源服务器不再可以访问目标资源,并且此情况可能是永久性的。

这并不经常使用,但如果您要删除网站上不再存在的内容,则可能需要用到此状态代码。

使用 HTTP 410 消失可能是明智之举的示例包括:

  1. 电子商务: 商品已从库存中永久移除。

  1. 论坛:已被用户删除的话题。

  1. 博客:已从网站移除的博客文章。

此状态代码通知机器人不应再返回来对此内容进行爬网

  • 500

指示服务器遇到阻止其完成请求的意外情况。

Next.js将自动返回 500 状态代码,用于意外的应用程序错误。您可以通过创建 pages/500.js 来创建在构建时静态生成的自定义 500 错误页面。

// pages/500.js
export default function Custom500() {
  return <h1>500 - Server-side error occurred</h1>;
}

  • 503

指示服务器尚未准备好处理请求。

建议在网站关闭时返回此状态代码,并且您预测网站将在较长时间内关闭。这可以防止长期失去排名

什么是robots.txt文件

robots.txt是一个文本文件,用于指示网络爬虫(搜索引擎蜘蛛)哪些页面可以被访问,哪些页面不能被访问。该文件通常位于网站的根目录下,可以通过在浏览器中输入网站地址后加上“/robots.txt”来访问。该文件的作用是帮助网站管理员控制搜索引擎对网站内容的访问和抓取,保护网站的安全和隐私。

您可能希望保护网站的某些区域不被抓取并因此被索引,例如您的 CMS 或管理员、电子商务中的用户帐户或某些 API 路由等。

这些文件必须在每个主机的根目录中提供,或者您可以将根 /robots.txt 路径重定向到目标 URL,大多数机器人都会遵循。

由于 Next.js 中的静态文件服务我们可以轻松添加“robots.txt”文件。我们将在根目录中的public目录下创建一个名为“robots.txt”的新文件。

放置的内容的示例如下:

//robots.txt

# Block all crawlers for /accounts
User-agent: *
Disallow: /accounts

# Allow all crawlers
User-agent: *
Allow: /

注意:不要将public目录命名为任何其他名称。该名称无法更改,并且是唯一用于提供静态资源的目录。

XML 站点地图

站点地图是与 Google 沟通的最简单方式。它们会指示属于您网站的网址以及更新时间,以便 Google 可以轻松检测新内容并更有效地抓取您的网站。

尽管XML站点地图是最知名和最常用的站点地图,但它们也可以通过RSS或Atom创建,如果您更喜欢最大的简单性,甚至可以通过文本文件创建。

站点地图是一个文件,您可以在其中提供有关您网站上的网页、视频和其他文件以及它们之间的关系的信息。像谷歌这样的搜索引擎会读取此文件,以更智能地抓取您的网站。

根据谷歌,在以下情况下,您可能需要站点地图:

  • 您的网站非常大。因此,Google 网络抓取工具更有可能忽略抓取您的某些新网页或最近更新的网页。

  • 您的网站有大量内容页面存档,这些内容页面是孤立的或彼此链接不紧密的。如果您的网站网页没有自然地相互引用,您可以在站点地图中列出它们,以确保 Google 不会忽略您的某些网页

  • 您的网站是新的,几乎没有外部链接。Googlebot 和其他网络抓取工具通过跟踪从一个网页到另一个网页的链接来浏览网络。因此,如果没有其他网站链接到您的网页,Google 可能无法发现这些网页。

  • 您的网站包含大量富媒体内容(视频、图片)或显示在 Google 新闻中。如果提供,Google 可以在适当的情况下考虑站点地图中的其他信息以进行搜索。

虽然站点地图对于出色的搜索引擎性能不是强制性的,但它们可以促进抓取和索引到机器人,因此您的

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
[软件功能]: 本软件用于从搜索引擎或者具体网页上提取链接,主要用途是搜索留言本、论坛、blog等地址 通过您设定的关键词 软件自动在搜索引擎结果里提取符合条件的连接 本软件把超链接分为两部分看待:连接和连接名称 通过对这两部分的设定来提取符合要求的连接 可以设定只提取含有某“特征词”的网址 也可以设定过滤含有某“特征词”的网址(针对链接) 可以设定只提取链接名称含有某“特征词”的网址 也可以设定过滤链接名称含有某“特征词”的网址(针对链接名称) 提取搜索结果是一门技术,需要一定的电脑和网络基础,本软件是为懂电脑和网络的人设计的 本软件是免费软件,不对外提供服务(本人的全系列客户除外) [参数说明]: 本软使用的关键在于正确设置各项参数,参数设置对了,链接也就提出来了 关键词或网址:如果从搜索引擎里提取 就填写关键词 比如 签写留言(提取留言本) 、Powered by Discuz(提取discuz类型的论坛) 如果是从某页面提取 就填写完整的网址 比如 http://club.sohu.com/map/club_map.htm 链接必含词汇: 就是规定提出来的链接必须含有什么词汇 比如提取留言本 就可以设定 wbook.asp、gb_sign.asp、upfile.asp、feedback.asp 这些常用的留言本文件名称 也可以留空,表示所有的网址都要 链接排除词汇:如果你不希望提取的网址含有某个词汇 就写上 这个一般不要动,不要修改默认的,更不能留空 链连名称必含: 就是提取连接时,链接名称里面必须含有的词汇 这个一般不要动,留空即可 链连名称排除: 就是提取连接时,链接名称里面不能含有的词汇 这个一般不要动,不要修改默认的,更不能留空 间隔或者限时:因为google禁止连续不停的快速搜索,所以本软件对百度和google采用不同的方式提取 对百度是连续性的 对google是固定间隔时间的不断提取 限时: 处理某一个页面允许的最长时间 超过限时就刷新重试 (针对百度) 间隔: 隔多久提取下一页(针对google,默认15秒,尽量不要修改) 过滤相似: 这个参数对应着搜索引擎的两种搜索模式,一般都要选上它,不熟悉搜索引擎的不要改 设置好各项参数后点击<提取>按钮即可,软件开始提取, 软件左下角会显示进度,提取完了会显示提取完毕 举例说明: 一、如果想从搜索引擎里提取某些网址 A.比如想提取一些留言本地址 首先 选择要用的搜索引擎(百度或者google) 然后输入关键字“签写留言” --如要教育类的留言本,就输“签写留言 教育” --如不要带验证码的就输“签写留言 教育 -验证码” 关键词选择学问很大,需仔细琢磨 其次选择链接必含词汇 --词汇那儿可以不填,这样可以提取出所有类型的留言本 --如果需要某一类型的留言本,就填上该类型的留言本地址中都有的词汇 比如 "write.asp"、"upfile.asp"、"leaveword.asp"、"add.asp"等等 其它参数可以不动 最后点<提取>按钮。软件就开始搜索,并不断把搜索到的相关网址添加到左边列 同时列表下方会显示提取了多少页,直到全部页面提取完毕。 B.比如想提取一些动网论坛地址 请先选择要用的搜索引擎(百度和google),然后输入关键字“Powered By Dvbbs”。 因为大多数论坛地址都含有“bbs”,所以你可以设定"bbs"为必含词汇,也可以不输入 其它参数可以不动。 直接点<提取>按钮。软件就开始搜索,并不断把搜索到的相关网址添加到左边列表里 同时列表下方会显示提取了多少页,直到全部页面提取完毕。 二、如果想从某具体网页上提取某些网址 请先输入该网页完整的具体网址 然后输入要提取的网址里面必含词汇,也可以输入排除词汇 然后点提取即可把你想要的网址一次性提出来。 比如想要搜狐论坛列表 http://club.sohu.com/map/club_map.htm 里的所有论坛栏目地址 首先输入网址 http://club.sohu.com/map/club_map.htm 我们可以发现该页面上论坛栏目地址都含有list这个词,所以把“list”作为必含词汇 然后点<提取>按钮,就可以把所有的搜狐论坛栏目地址都提出来了 注意事项: a.如果想提取全部网址,只需把必含词汇设为“http”或者留空 b.用不同特征词从搜索引擎提取某一类网址时,链接排除词汇的设定可以避免重复提取 c.一般情况下不要改动排除词汇的设定,默认设置不影响正常提取
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值