转载请注明出处。https://rhirufxmbcyj.gitlab.io
这篇就不介绍如何搭建博客了,hexo用github page搭建的教程一搜一大堆,gitlab步骤也没多大区别,这里主要说一下怎样让百度和谷歌能够搜索到我们搭建的博客。
为什么选择GitLab搭建博客
以前用的github,换成gitlab的原因主要是github不让百度蜘蛛爬啊,百度蜘蛛爬不到就没办法在百度里展示了,查了一些解决方法,有的挂CDN的,有买服务器的,有另作一个镜像的,自我感觉还不如换一个方便。
GitLab的CI也很方便,这样就不用本地构建了,直接修改文件pull上去,后台自动进行构建操作。
GitLab的CI
个人认为使用gitlab的ci还是比较方便的,需要在博客目录下加一个文件,.gitlab-ci.yml。
这是我的文件,可以依照这个编写
1 | image: node:8.11.2 |
没用过docker,只说一下我自己的理解,不对请指出。
image:镜像,这个设置成node原因我也不知道为啥,看的别人这样设置的。
pages: cache: paths:这个就填写为node_modules,这里边放的应该是hexo和node的脚本?库?大概是这些吧。
script:这里填要执行的命令,按顺序执行。
artifacts:这个应该是要发布的网站存放的文件夹,hexo经过deploy后都是public文件夹。
only:这个不知道什么意思,但是看到别人填master我也填,应该是分支的意思。
文件写好以后pull上去,以后的每次pull都会执行script里的命令,也就实现了自动发布网站了。
让Google收录博客
- 首先,确保博客已经发布了,自己可以正常访问
- 要有一个Google账号,没有就注册一个吧,中国的手机有些不给注册,如果你的手机号也在此列的话,还是淘宝买一个改密码吧。
点击添加属性按钮,把自己的博客链接填进去
选择HTML文件上传的验证方法,然后按照提示的步骤进行验证。基于hexo的博客,我们把验证文件放在source文件夹里就可以了,deploy时会自动发布。注意:验证文件要手动编辑一下,在文件开头加上layout: false标签,否则该html文件也会使用当前的主题样式,导致内容无法被google正确获取,也就无法验证成功了。
1
2
3
4
layout: false
google-site-verification: googlexxxxxxxxxx.html复制好以后,先将改动pull上去,等待网站构建完成发布后,可以人工访问一下,就是在域名后加上验证文件的文件名,例如:https://xiaoming.gitlab.io/google2744c3c83d7970a5.html。期望的结果是,不带任何样式的一句google-site-verification: googlexxxxxxxxxx.html,如果有样式的话就说明没有加上上边的layout: false。可以正常访问的就点验证吧!
验证成功了就说明这个网站是属于你的了,为保持已进行过验证的状态,即使成功通过了验证也请不要删除该 HTML 文件,不然后期google就无法爬取你的网站了。
使用npm安装sitemap的插件,每次deploy时自动生成google可用的sitemap文件。
1
命令为:npm install hexo-generator-sitemap --save
进入google的网站管理页面,在左侧控制台处依次点击抓取—站点地图,右上角有添加/测试站点地图,点击以后将sitemap.xml填进去,然后测试提交。
提交成功以后,google以后就会周期性的爬去sitemap.xml记录的网址了,更新也不用重复提交sitemap,只需要更新sitemap即可。
也可以选择手动提交,在左侧控制台处,点击抓取—Google 抓取工具,然后输入网址,进行抓取,过程中可以刷新下页面看结果,成功以后列表中有将网址和链接页编入索引,点击以后会编入索引,即显示在搜索结果中。
PS:google在收录过程中有快有慢,这个没办法改,我的博客提交了十几天才能在搜索中展示。
查询是否被展示,可以在google搜索中,输入site:主页网址,例如site:rhirufxmbcyj.gitlab.io。
让百度收录博客
注册一个百度账号
访问百度的站长平台https://ziyuan.baidu.com/dashboard/index,点击添加网站,然后输入网址,http和https按实际选择,gitlab搭建的博客是https的。然后是站点信息,随便选吧。然后就到了验证这一步,和上边google的验证过程一样,选择文件验证,下载文件,放到source文件夹,加上layout: false”,pull到仓库,等待网站成功发布,然后手动校验一下,在百度上点击完成验证按钮。
进入站长平台,点击左侧的列表中数据引入—链接提交,向下翻发现,有自动提交和手动提交两种方式,手动提交也就是直接把网址粘贴进去,然后提交就可以了,这种方法如果以后文章写的多了也就费时费力了,推荐尽量使用自动提交的三种方法。
百度的sitemap
原理是,sitemap里边存放着博客里的网址,提交了sitemap,只能被动着等待百度的爬取。
使用npm安装sitemap的插件,每次deploy时自动生成baidu可用的sitemap文件。
1
命令为:npm install hexo-generator-baidu-sitemap --save
请填写数据文件地址这里填入sitemap的完整地址,例如:https://rhirufxmbcyj.gitlab.io/baidusitemap.xml,然后提交。
提交成功以后,大约十几秒就可以看到结果了,在百度站长平台的sitemap页面下边,状态有等待、正常、错误,错误的话就得检查原因了,sitemap通过以后,也像google的sitemap一样,不需要重复提交,百度周期性爬取。只需要发布新文章时更新sitemap即可,更新sitemap,hexo的插件已经帮我们做了,所以到这里,sitemap也就不用我们操心了。
百度的自动推送
原理是,每次有人访问页面时,都会将网址提交给百度,比sitemap主动一些,但是与访问量有关,如果没有访问量,那这个功能也就废了。
自动推送较为简单,介绍说是要在每个网页中都加入这段JS代码,但是我们使用hexo只需在一处加入就可以让每个网页都存在这段代码。
博客文件夹下,寻找目录 themes\yilia\layout\_partial,我使用的主题是yilla,其他主题不清楚,应该都是类似的。
文件夹中有一个after-footer.ejs文件,里边已经有一段script代码了,这段代码放在其后即可。
百度的主动推送
原理是,百度开放接口,让我们可以在每次发布都可以使用脚本或工具进行提交。
四种推送方法,curl、post、php、ruby,百度也提供了demo,可以依照这自己研究。这里只写一下我使用的curl推送方法。
1 | 将要提交的链接按照每行一条的格式写入一个文本文件中,命名此文件为urls.txt,然后进入该文件所在目录,执行如下命令: |
将要提交的链接按照每行一条的格式写入一个文本文件中,命名此文件为urls.txt,然后进入该文件所在目录,执行如下命令:
curl -H ‘Content-Type:text/plain’ –data-binary @urls.txt “http://data.zz.baidu.com/urls?site=https://rhirufxmbcyj.gitlab.io&token=XXXXXXXXXXX"
也就是说要把需要提交的链接提取出来,这个链接其实可以从sitemap里拿,我是用python的正则表达式把地址截出来的。
代码:
1 | import re |
这个python文件放在根目录即可,连同着博客一块pull上去,并且修改一下.gitlab-ci.yml文件,让其运行python代码。
.gitlab-ci.yml文件内容:
1 | image: node:8.11.2 |
最终,在gitlab的ci构建里同步显示的窗口中,看到了主动推送成功的提示。