优化过程中踩了不少坑,这里记录一下,也希望能帮助到需要的人。
优化文章url,便于收录
缩减链接长度 且 固定链接
hexo中,文章链接默认是 permalink: :year/:month/:day/:title/ 这种形式。
即是:sitename/year/mounth/day/title四层的结构,且每次更改文章可能会导致链接变化
搜索引擎认为对于一般的中小型站点,3层足够承受所有的内容了,所以蜘蛛经常抓取的内容是前三层,而超过三层的内容蜘蛛认为那些内容并不重要,所以不经常爬取。出于这个原因所以permalink后面跟着的最好不要超过2个斜杠。
而我们的链接由于大多带有中文,转码的时候就会很丑很长,并且更改文章可能还会导致链接变化,有没有一种办法,既可以缩短链接长度又固定链接呢?
利用 abbrlink 插件可以实现,它会在文章生成一个abbrlink字段,这个字段永远不会改变,且使链接层次短,利于seo收录
配置abbrlink
在hexo根目录安装:
npm install hexo-abbrlink --save
更改hexo配置文件_config.yml
1 | abbrlink: # 新增abbrlink配置 |
百度收录规则里面明确强调了,需要html结尾的,必须html结尾,规范化url,有利于抓取并提高排名。
所以 :abbrlink.html 会比 :abbrlink 更好一点(?)。但其实不弄也没差
abbrlink编码规则决定后就不要再改了,不然编码不统一,导致文章链接改变
效果如下
- 生成的abbrlink字段
- 链接效果
固定链接抛开seo优化不谈,本身就很重要,它保证了你链接的完好性
将网站提交给百度搜索引擎
这里只谈百度了,毕竟百度才是国内主要用的,谷歌有墙
安装站点地图sitemap
站点地图是一种文件,一般为xml形式,您可以通过该文件列出您网站上的网页,从而将您网站内容的组织架构告知Google和其他搜索引擎。Googlebot等搜索引擎网页抓取工具会读取此文件,以便更加智能地抓取您的网站。
先安装插件
1 | npm install hexo-generator-sitemap --save 谷歌 |
貌似还需要在根目录的_config.yml中添加sitemap的路径?但是我不加也能在public中生成,酌情添加吧
1 | sitemap: |
编译博客并生成xml文件
hexo g编译博客后,你会发现你的public中多了两个xml文件,分别是sitemap.xml以及baidusitemap.xml,里面收录着你博客将被爬虫的链接,此时代表你成功了。
之后再hexo d部署到网站上,https://dingzh.cc/baidusitemap.xml 和 https://dingzh.cc/sitemap.xml 验证一下能否跳转即可
添加并验证网站
有三种方式:
添加时让你最好带www,其实不带也问题不大现在
- 文件验证:得放在themes的source下?因为放到根目录的source下会破坏原有的格式导致验证失败。这里我也不是很懂QAQ
- html标签验证:我是butterfly主题,自带了html标签站长验证,只需要填入content就行了
1 | # Verification (站長驗證) |
- CNAME验证:如果你有域名的话,那么你肯定也会域名解析了,这点我就不说了
验证成功后我们就可以设置推送啦^^
设置推送
大致可以分为三种:
主动推送:最快,在你
hexo g -d时会生成一个txt文件,里面记录着你最新提交的n个链接,并把其交给百度。自动推送:最方便,每当有人浏览你网页时,自动推送给百度。
sitemap:传统,将之前生成的sitemap文件交给百度,百度会定期检查你提交的sitemap文件并进行处理,但收录速度并不快。
其实还有一个手动提交,让你一个个去手动提交。
但是,何必呢……
虽然从效率上来说,主动推送>自动推送>sitemap。但是其实三者可以一起使用,相辅相成,没必要分个高下。
主动推送
据说可以解决百度无法爬虫github的问题,因为是我们自己提交给百度的
安装插件 hexo-baidu-url-submit
在hexo根目录安装 npm install hexo-baidu-url-submit --save
在根目录的_config.yml中添加配置
- 先添加
hexo-baidu-url-submit插件的配置
1 | baidu_url_submit: |
这里的token位推送接口给你的token
count 的值不要设太高,除非你真的有那么多的链接需要提交。否则多次提交重复内容百度会暂时将你加入黑名单或给你限制提交的次数甚至降低你网站的权值。而且在你调试网页且并没有新链接需要提交时,最好将count的值设为0,防止反复提交
还需要将_config.yml配置中的url改成你在站长平台注册的域名,不过我相信这个你肯定已经弄过了
1
url: https://dingzh.cc
最后修改一下deployer,让你推送时顺便推给百度
1
2
3
4
5deploy:
- type: git
repository: https://xxxxxx.git
branch: main
- type: baidu_url_submitter #把链接提交到百度站长平台
注意 yml 文件的缩进是由严格要求的,为2个空格,不然hexo编译时会报错
hexo d -g 推送博客
都配置好后 hexo g -d 推送博文,出现这个就算成功啦!!
remain:一天内剩余提交量
success:本次提交成功的链接数
自动推送
根据百度原话,只要将 js代码 放到博客的每一个页面下就行了
1 | (function(){ |
问题是怎么把这段代码放到每一个页面下?
网上大都只有 next 主题的方法,在主题配置文件中,令 baidu_push 设置为 true 即可,非常简单。而我是 butterfly 主题的该怎么做呢?
其实也非常简单,只需要利用主题配置文件中的 inject 配置项,在head 和 body 间引入这段 js代码 即可。在 themes/butterfly/source/js/ 下新建 baidu_sub.js ,将代码复制粘贴进去,然后在主题配置文件的 inject 中引入即可。
1 | inject: |
可以看到,这段js成功出现在了每个html页面的head中
sitemap推送
很简单,把你之前生成的 sitemap.xml 在百度上提交即可
到此,主动推送三种方式具体如何实现到介绍完了,呼~
拓展:robots.txt 文件的设置
以下是百度原话:
1 | 一、使用说明 |
总的来说,就是如果你不想让百度爬你某些链接,你就得设置 robots.txt 文件
设置 robots.txt 可以防止大量垃圾链接提交给百度,提高你文章的权重
而且听说设置 rotbot.txt 可以提高收录概率,所以就算你没有不希望被爬取的内容,也可以设置一个空的 robots.txt 文件
具体用法用例,可以参照 https://ziyuan.baidu.com/college/courseinfo?id=267&page=12#h2_article_title28 。我这里只进行个例的演示
若你没有不希望被爬取的内容
1
2
3
4
5User-agent: *
Allow: /
Sitemap: https://dingzh.cc/baidusitemap.xml
Sitemap: https://dingzh.cc/sitemap.xml若你有不希望被爬取的内容
比如说,我的文章全部放在 /posts 中,那么我就可以只让百度爬取我 /posts 中的内容,具体设置如下。
1 | User-agent: * |
- Allow 的优先级大于 Disallow
- 最后可以放你的 sitemap.xml 文件链接
你可以通过以下步骤验证你的 robots.txt 文件是否配置成功
hexo g -d后输入链接,看能否成功跳转到你的robots.txt在百度站长平台 robots 验证中检查
总算写完了,这算是我写最长的一篇文章了,好累ヽ( ̄▽ ̄)و。
就算配置好后,如果你是 github pages 上托管的网站,可能不被收录。
可以采用 cdn 加速域名 或 部署一个国内镜像站 等方法解决。
这里就不介绍了,自行百度






















