什么是SEO?🤔️
搜索引擎优化(Search Engine Optimization), 利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名。 搜素引擎最大化收录,最大化提高权重,带来更多流量。
搜索引擎的工作原理 👀
被称为“蜘蛛”也被称为“机器人”的程序在网页中爬行,从一个链接爬到另外一个链接。将抓取回来的数据对其关键词依次分析。存入原始页面数据库,建立索引链接。搜索引擎蜘蛛在抓取页面时,也做一定的重复内容检测,一旦遇到权重很低的网站上有大量抄袭、采集或者复制的内容,很可能就不再爬行。
实现SEO的方法
通过服务端渲染(SSR),即:网页是通过服务端渲染生成后输出给客户端。
为什么要采取SSR
为了用户的体验以及SEO
有时用户打开网页的速度比较慢,采用SSR可加快页面的渲染 简单来说我们希望搜索引擎看到这样的代码😄
而不是这样的代码🤦♀️
具体实现步骤:
1.网页代码优化👇
title:最好使用描述 + 标题的方式。 只强调重点即可,尽量把重要的关键词放在前面,关键词不要重复出现,尽量做到每个页面的标题中不要设置相同的内容。
如:描述| 标题
keywords : 列举出几个页面的重要关键字即可,切记过分堆砌
description :对当前网页内容的简单描述
2.语义化书写HTML代码,符合W3C标准 👇
尽量让代码语义化,在适当的位置使用适当的标签,用正确的标签做正确的事
3.a标签🏷️
标签:页内链接,要加 “title” 属性加以说明,让访客和 “蜘蛛” 知道。而外部链接,链接到其他网站的,则需要加上 el="nofollow" 属性, 告诉 “蜘蛛” 不要爬,因为一旦“蜘蛛”爬了外部链接之后,就不会再回来了。
<a href="https:www.baidu.com" title='百度' class='logo'></a>
4.h1标签🏷️
h1标签自带权重,'爬虫'认为它最重要,每个页面最多只能有一个H1标签,放在该页面最重要的标题上面
5.alt
img标签使用alt加以说明
<img src='img.png' alt="描述"/>
多语言
动态路由
在pages目录下创建_lang文件
对不同的语言版本使用不同的 URL,而不是使用 cookie 或浏览器设置来调整页面上的内容语言。👇
https:example.com/zh
https:example.com/en
⚠️爬虫发送 HTTP 请求时不需要Accept-Language在请求头中设置。所以该值为空
请使用hreflang告诉Google不同语言版本,使搜索结果链接到页面的正确语言版本。
<link rel="alternate" data-n-head="true" href="https://example.com/en/" hreflang="en">
robots.txt👇
robots.txt 文件告诉搜索引擎爬虫,爬虫可以访问您网站上的哪些 URL。
robots.txt 文件位于您网站的根目录中。因此,对于 site www.example.com, robots.txt 文件位于 www.example.com/robots.txt
规则👇:
user-agent:标识相应规则适用于哪些抓取工具。allow:可抓取的网址路径。disallow:不可抓取的网址路径。sitemap:站点地图的完整网址。
User-agent: Googlebot
Disallow: /nogooglebot/
User-agent: *
Allow: /
Sitemap: http://www.example.com/sitemap.xml
站点地图 👉 sitemap
站点地图是 一个文件,您可以在其中提供有关您站点上的页面、视频和其他文件以及它们之间的关系的信息。站点地图会告诉 Google 哪些页面和文件在您的站点中很重要,并且还提供有关这些文件的有价值的信息。Google 等搜索引擎会读取此文件以更有效地抓取您的网站。
站点地图的格式👇:
以下配置采用XML格式👇:
| 属性 | 是否必填 | 描述 |
|---|---|---|
| urlset | true | 封装文件并引用当前协议标准。 |
| url | true | 条目的父标记 |
| loc | true | 页面的 URL |
| lastmod | false | 跟新日期:YYYY-MM-DD |
| changefreq | false | 更改的频率 |
| priority | false | 优先级:0.0 到 1.0 |
通知搜索引擎爬虫
1⃣️在 robots.txt 文件中指定站点地图位置
创建sitemap.xml文件并且把路径写入到robots.txt中, Sitemap: https://example.com/sitemap.xml
- XML 站点地图基础版本,其中包含单个 URL 的位置:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.example.com/foo.html</loc>
<lastmod>2018-06-04</lastmod>
</url>
</urlset>
2.使用站点地图索引文件(对多个站点地图文件进行分组)
| 属性 | 是否必填 | 描述 |
|---|---|---|
| sitemapindex | true | 站点地图的信息 |
| sitemap | true | 单个站点地图的信息 |
| loc | true | 站点地图的位置 |
| lastmod | false | 跟新日期:YYYY-MM-DD |
sitemap.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://example.com/sitemap_zh.xml</loc>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap_en.xml</loc>
</sitemap>
</sitemapindex>
sitemap_zh.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://example.com/zh/</loc>
</sitemap>
<sitemap>
<loc>https://example.com/zh/help</loc>
</sitemap>
</sitemapindex>
避免几个页面的内容高度相似,降低搜索引擎爬取的权重,可使用canonical来优化
<link data-n-head="true" rel="canonical" href="https:example.com"></link>
部署到Vercel
在项目根目录下创建vercel.json文件
{
"version": 2,
"builds": [
{
"src": "nuxt.config.js",
"use": "@nuxtjs/vercel-builder",
"config": {
"serverFiles": [
"package.json",
"config/*.js"
]
}
}
]
}
- serverFiles
一些不是由webpack(或在 static/ 中)构建的依赖文件。可以将它添加到serverFiles中(例如本地模块)
- vercel打包好的格式为