Hexo博客的SEO优化
前言
以前没有怎么优化过seo、站点地图、rss订阅链接、robots 文件,一个都没有写过,最近有空自然这些该加上的东西都需要加一下了。
本篇所使用到的插件:
- hexo-generator-sitemap 构建网站地图
- hexo-generator-baidu-sitemap 百度专用的
- hexo-abbrlink 链接唯一永久化
- hexo-external-link 外链跳转插件设置
- hexo-submit-urls-to-search-engine 自动化提交文章给爬虫
- hexo-generator-feed 生成RSS订阅链接
关于SEO
概念:
SEO(Search Engine Optimization),即搜索引擎优化,是一种通过利用搜索引擎内在规则,提升网站在相关搜索引擎中自然排名的方法。其目标是使网站在行业内占据领先地位,从而获得品牌效益。搜索引擎优化在很大程度上是一种由网站经营者实施的商业行为,旨在推动自身或公司网站的排名靠前,以获取更大的竞争优势。 ——源自《百度百科》
简单来说就是通过对网站的优化,来提高网站在搜索引擎的排名,从而增加更多的访问量
而搜索引擎的工作过程大致可以分为下面三个阶段(具体基本原理这里不去阐述):
- 爬行和抓取:搜索引擎通过跟踪链接访问网页、获得页面 HTML 代码并存入数据库
- 预处理:索引程序对抓取来的页面数据进行文字提取、中文分词、索引等处理,以备排名程序调用
- 排名:用户输入关键词后,排名程序调用索引数据库,计算相关性,然后按照一个的格式生成搜索结果页面
SEO 优化可以分为站内优化和站外优化,而站内优化又分为:网站结构优化 和 网站页面优化,下面的优化内容主要就是针对站内优化的
具体的内容比较繁多,可以看掘金里的-> 这篇博文
网站结构优化
1. 网站地图
无论站点的多少,网站地图都是需要的,网站地图有 HTML 和 XML 两种版本。 HTML 版本的网站地图就是一个页面列出网站的结构;而 XML 版本则是通过在根目录添加
sitemap.xml
文件
要给你的文章生成 sitemap
文件,需要安装如下插件:
npm install hexo-generator-sitemap --save # sitemap.xml适合提交给谷歌搜素引擎
npm install hexo-generator-baidu-sitemap --save # baidusitemap.xml适合提交百度搜索引擎
然后在 站点配置文件 中添加以下代码:
sitemap:
path: sitemap.xml
baidusitemap:
path: baidusitemap.xml
这样在每次执行 hexo g
命令后都会在 /public 目录下生成 sitemap.xml
和 baidusitemap.xml
,这就是你的网站地图。
2. 链接结构
SEO 认为,网站的最佳结构是用户从首页 点击三次 就可以到达任何一个页面,很显然,我们使用 hexo 编译的站点打开文章的 url 是:
sitename/year/mounth/day/title
四层的结构,这样的 url 结构很不利于 SEO,爬虫就会经常爬不到我们的文章所以,我们需要对 url 的形式进行优化,将 url 修改为
domain/postname
的形式,修改 站点配置文件 中的permalink
:permalink: :title.html permalink_defaults:
这样虽然可以优化每篇文章的 url ,但实际上:中文类型的标题还是会被解析为数字乱码(英文并不影响,但我们不可能只采用英文标题),这样给别人的观感并不好,尤其是你想要分享某一篇文章时,别人甚至会以为你这个链接并不怎么安全,所以需要进行如下优化(第三步:链接唯一永久化):
3. 链接唯一永久化
因为上面的链接并不美观,所以进行如下优化:
安装 hexo-abbrlink 插件:
npm install hexo-abbrlink --save
修改配置
在 站点配置文件 中添加如下代码,并修改
permalink
的格式permalink: posts/:abbrlink.html # abbrlink配置 abbrlink: alg: crc32 # 算法:crc16(default) and crc32 rep: dec # 进制:dec(default) and hex | 输出进制:十进制和十六进制,默认为10进制。丨dec为十进制,hex为十六进制
关于属性值:
crc16 & hex: http://wuyea.top/posts/66c8.html crc16 & dec: http://wuyea.top/posts/65535.html crc32 & hex: http://wuyea.top/posts/8ddf18fb.html crc32 & dec: http://wuyea.top/posts/1690090958.html
修改 Front-matter
将
abbrlink: xxx
永久固定在Front-matter
中,在hexo/scaffolds/
路径中找到post.md
文档,在其中添加如下一行即可:--- title: {{ title }} date: {{ date }} tags: abbrlink: ---
- 如果不在每篇文章的
Front-matter
中指定abbrlink: xxx
的值,那么就会根据算法随机生成数字;如果你指定了值的话,就会以指定内容显示 - 当重新执行
hexo clean && hexo g
命令时,该插件就会自动为没有设置 abbrlink 值的文章生成相应的编号,这样编号不变,该文章的 url 就不变,可以随意修改文件名,文章标题
- 如果不在每篇文章的
4. 外链跳转设置
外链跳转插件主要用于指示搜索引擎不要追踪(即抓取)网页上的带有 nofollow 属性的任何出站链接,以减少垃圾链接分散网站权重
通常为网站使用到的所有外链添加 rel="noopener external nofollow noreferrer"
, 可以有效地加强网站SEO和防止权重流失可以有效地加强网站SEO和防止权重流失。
这里列举几个插件,用哪个都可以:
在 站点配置文件 中添加以下代码:
hexo_external_link:
enable: true
enable_base64_encode: false # 是否对跳转url使用base64编码 – 默认 fasle
url_param_name: 'u' # 参数名,在跳转到外链传递给html_file_name的参数名 – 默认 ‘u’
html_file_name: 'go.html' # 跳转到外链的页面文件路径 – 默认 ‘go.html’
target_blank: true
link_rel: 'external nofollow noopener noreferrer'
domain: 'wuyea.top' # 如果开启了防盗链,填写你的域名
safety_chain: true # 为了防止外链盗用 对域名进行的判断
这样插件会将博客中的出站链接自动加上 nofollow 标签
5. 蜘蛛协议robots.txt
说明:
- 搜索引擎用来爬行和抓取页面的程序也就是我们熟知的蜘蛛(spider),也称为机器人(bot)。spider 访问网站页面类似于普通用户使用的浏览器。spider 发出页面访问请求后,服务器返回 HTML 代码,spider 把收到的程序存入原始页面数据库。为了提高爬行和抓取速度,搜索引擎通常或多个 spider 并行爬行
- spider 访问任何一个网站时,都会先访问该网站根目录下的 rotbots.txt 文件。该文件可以告诉 spider 哪些文件或目录可以抓取或者禁止抓取
- 根据以上内容,我们可以通过设置 rotbots.txt 文件来进行相应设置
配置方法:
可以直接在hexo 项目下的 source
目录添加 robots.txt
文件,文件内容如下:
User-agent: Googlebot
Crawl-delay: 5
User-agent: Bingbot
Crawl-delay: 10
User-agent: Baiduspider
Sitemap: https://你的域名/baidumap.xml
Crawl-delay: 5
User-agent: *
Disallow: /friends/
Disallow: /contact/
Disallow: /js/
Disallow: /css/
Disallow: /libs/
Disallow: /fonts/
Disallow: /medias/
Disallow: /*.jpg$
Disallow: /*.jpeg$
Disallow: /*.gif$
Disallow: /*.png$
Disallow: /*.bmp$
Sitemap: https://你的域名/sitemap.xml
解释:
User-agent
:爬虫名称,比如 Baiduspider、Googlebot、Bingbot 等。Disallow
:指示不允许爬虫抓取的目录或文件。Allow
:明确允许爬虫抓取的特定路径,即使在 Disallow 中被禁止。Crawl-delay
:用于控制爬虫抓取内容的频率,以防止爬虫抓取过快,影响服务器性能。通常设置为几秒钟的间隔。(部分网站不支持)Host
:用于指定首选的域名,如果你有多个域名指向同一个网站,可以通过此指令明确告诉爬虫优先抓取哪个域名。
网站推送优化
1. 查看博客是否被收录
- 在谷歌或者百度的搜索链接中,使用以下格式可以直接搜索自己的域名,如果能搜索到就说明已经被收录,反之则没有
- 可以直接搜索自己的域名,或者加一些关键词来更好地判断
- 例如:
site: https://wuyea.top
2. 搜索引擎提交
常见的搜索引擎提交地址:
- Google https://www.google.com/webmasters/tools/submit-url?hl=zh-CN
- 必应 https://www.bing.com/toolbox/submit-site-url
- Baidu https://ziyuan.baidu.com/linksubmit/index
以百度为例:
- 进入 百度站点平台 ,使用百度账号登录
- 绑定自己的域名,这里不做过多介绍,和谷歌类似,网上教程也有,自行搜索
- 在左侧 资源提交 中找到
普通收录-sitemap,然后将网站的sitemap地址填入即可(因百度调整,申请门槛较高,无法使用sitemap,故需要使用API提交)。
3. 自动提交收录文章
因为手动调用API太繁琐,不如让它自动提交最新改动文章即可。操作如下:
安装插件:hexo-submit-urls-to-search-engine,官方文档:https://cjh0613.com/20200603HexoSubmitUrlsToSearchEngine#%E7%99%BE%E5%BA%A6
npm install --save hexo-submit-urls-to-search-engine
在 站点配置文件 中添加如下配置:
hexo_submit_urls_to_search_engine: submit_condition: count #链接被提交的条件,可选值:count | period 现仅支持count count: 10 # 提交最新的10个链接 period: 900 # 提交修改时间在 900 秒内的链接 google: 0 # 是否向Google提交,可选值:1 | 0(0:否;1:是) bing: 0 # 是否向bing提交,可选值:1 | 0(0:否;1:是) baidu: 1 # 是否向baidu提交,可选值:1 | 0(0:否;1:是) txt_path: submit_urls.txt ## 文本文档名, 需要推送的链接会保存在此文本文档里 baidu_host: https://wuyea.top ## 在百度站长平台中注册的域名 baidu_token: 请按照文档说明获取 ## 请注意这是您的秘钥, 所以请不要把它直接发布在公众仓库里! bing_host: <你的域名> ## 在bing站长平台中注册的域名 bing_token: 请按照文档说明获取 ## 请注意这是您的秘钥, 所以请不要把它直接发布在公众仓库里! google_host: <你的域名> ## 在google站长平台中注册的域名 google_key_file: Project.json #存放google key的json文件,放于网站根目录(与hexo _config.yml文件位置相同),请不要把json文件内容直接发布在公众仓库里! google_proxy: 0 # 向谷歌提交网址所使用的系统 http 代理,填 0 不使用 replace: 0 # 是否替换链接中的部分字符串,可选值:1 | 0(0:否;1:是) find_what: http://cjh0613.github.io/blog # 要替换的内容 replace_with: https://cjh0613.com # 替换之后的内容
完成上述配置后,你在 Hexo 根目录下运行
hexo generate
指令时,会生成一个.txt
文件来存储要推送的链接。您可以打开此文件查看链接是否正确,如不正确,请访问 hexo 的
_config.yml
进行配置。您也可以手动修改此.txt
文件后再推送链接。depoly
如果您之前没有添加过
deploy:
配置项,直接将下方粘贴至 hexo 的_config.yml
,覆盖默认的deploy:
配置项。deploy: - type: cjh_google_url_submitter - type: cjh_bing_url_submitter - type: cjh_baidu_url_submitter
完成这一步之后,运行
hexo deploy
命令时就可以自动推送链接至搜索引擎了。注意:您必须运行
hexo deploy
或hexo d
命令以触发推送,无论您之前是否使用这条命令进行部署。如果已设置过
deploy:
配置项,直接粘贴上述代码块会提示 配置冲突,直接在已有deploy:
配置项下添加即可。如:deploy: - type: git repo: coding: git@xxx branch: master #添加本插件的配置项: - type: cjh_google_url_submitter - type: cjh_bing_url_submitter - type: cjh_baidu_url_submitter
**注意:上面每个
type:
前都有-
**。正常情况下即可提交成功!