让川神先表演

虚心求教 欢迎指点

  • 主页
  • 分类
所有文章 友链 关于我

让川神先表演

虚心求教 欢迎指点

  • 主页
  • 分类

让百度和谷歌收录自己的GitLab博客

2018-10-11

转载请注明出处。https://rhirufxmbcyj.gitlab.io

这篇就不介绍如何搭建博客了,hexo用github page搭建的教程一搜一大堆,gitlab步骤也没多大区别,这里主要说一下怎样让百度和谷歌能够搜索到我们搭建的博客。

为什么选择GitLab搭建博客

以前用的github,换成gitlab的原因主要是github不让百度蜘蛛爬啊,百度蜘蛛爬不到就没办法在百度里展示了,查了一些解决方法,有的挂CDN的,有买服务器的,有另作一个镜像的,自我感觉还不如换一个方便。

GitLab的CI也很方便,这样就不用本地构建了,直接修改文件pull上去,后台自动进行构建操作。

GitLab的CI

个人认为使用gitlab的ci还是比较方便的,需要在博客目录下加一个文件,.gitlab-ci.yml。

这是我的文件,可以依照这个编写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
image: node:8.11.2

pages:
cache:
paths:
- node_modules/

script:
- npm install hexo-cli -g
- npm install
- npm install hexo-generator-sitemap --save
- npm install hexo-generator-baidu-sitemap --save
- hexo clean
- hexo g
- hexo deploy
artifacts:
paths:
- public
only:
- master

没用过docker,只说一下我自己的理解,不对请指出。

  • image:镜像,这个设置成node原因我也不知道为啥,看的别人这样设置的。

  • pages: cache: paths:这个就填写为node_modules,这里边放的应该是hexo和node的脚本?库?大概是这些吧。

  • script:这里填要执行的命令,按顺序执行。

  • artifacts:这个应该是要发布的网站存放的文件夹,hexo经过deploy后都是public文件夹。

  • only:这个不知道什么意思,但是看到别人填master我也填,应该是分支的意思。

文件写好以后pull上去,以后的每次pull都会执行script里的命令,也就实现了自动发布网站了。

让Google收录博客

  • 首先,确保博客已经发布了,自己可以正常访问
  • 要有一个Google账号,没有就注册一个吧,中国的手机有些不给注册,如果你的手机号也在此列的话,还是淘宝买一个改密码吧。
  • 登录Google Search Console

  • 点击添加属性按钮,把自己的博客链接填进去

  • 选择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
2
将要提交的链接按照每行一条的格式写入一个文本文件中,命名此文件为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"

将要提交的链接按照每行一条的格式写入一个文本文件中,命名此文件为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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import re
import os

content = ''

# 读取sitemap文件 因为hexo g之后会生成public文件夹 sitemap也在里边 所以就直接读取了
def get_sitemap_content():
global content
f = open("public/baidusitemap.xml", "r")
content = f.read()
f.close()

# 用正则表达式取出网址 添加换行符存放到文件中
def write_urls():
global content
urls = re.findall(r"<loc>(.+?)</loc>", content)
f = open("urls.txt","w")
for url in urls:
url = url + '\n'
f.write(url)
f.close()


if __name__ == '__main__':
get_sitemap_content()
write_urls()
# 这一串字符串是从百度站长平台拷贝的 因为token不同,所以需要填写自己的
print(os.system('''curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls?site=https://rhirufxmbcyj.gitlab.io&token=xxxxxxxxxxxxxx"'''))

这个python文件放在根目录即可,连同着博客一块pull上去,并且修改一下.gitlab-ci.yml文件,让其运行python代码。

.gitlab-ci.yml文件内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
image: node:8.11.2

services:
- python:3.7.0

pages:
cache:
paths:
- node_modules/

script:
- npm install hexo-cli -g
- npm install
- npm install hexo-generator-sitemap --save
- npm install hexo-generator-baidu-sitemap --save
- hexo clean
- hexo g
- hexo deploy
- python active_push.py
artifacts:
paths:
- public
only:
- master

最终,在gitlab的ci构建里同步显示的窗口中,看到了主动推送成功的提示。

赏

谢谢你请我吃糖果

  • 搭建博客

扫一扫,分享到微信

微信分享二维码
嵌入式环境下使用SQLite
MAC下小技巧

0 评论
Powered By Valine
v1.5.2
© 2019 让川神先表演
Hexo Theme Yilia by Litten
  • 所有文章
  • 友链
  • 关于我

tag:

  • Linux
  • MAC
  • Qt
  • 串口
  • 标签1
  • 标签2
  • CMake
  • MFC
  • ELF
  • 算法
  • 数据库
  • 嵌入式
  • 编程技巧
  • CrackMe
  • 搭建博客
  • 跨平台

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • Amy
无话可说