Mac下Hexo和GitHub-Pages搭建个人博客(三)

本文是《Mac 下 Hexo 和 Github-Pages 搭建个人博客》系列文章的第三篇。如果想让自己写的博客被 Google 和 Baidu 搜索到,需要将自己的博客网站提交到 Google 和 Baidu 搜索引擎。这篇文章主要介绍在将自己的博客提交到 Google 和 Baidu 的时候遇到的一些问题,主要分为以下几个部分:

  1. 将 Hexo 博客同时托管到 Github 和 Coding
  2. 提交 Hexo 博客到 Google
  3. 提交 Hexo 博客到 Baidu

将 Hexo 博客同时托管在 Github 和 Coding

起因

因为 Baidu 爬取 Github 太频繁,甚至引起了 Github 服务器的不稳定,最后 Github 直接屏蔽了 Baidu 的爬取,所以如果仅仅将 Hexo 博客托管在 GitHub 上的话,是无法通过 Baidu 搜索到的。验证方法如下:

  1. 打开百度站长平台
  2. 网页抓取
  3. 抓取诊断
  4. 点击抓取,抓取完成以后,查看抓取详情,发现如详细内容如下图所示


发现返回的 HTTP 头部信息中,装太行是:HTTP/1.0 403 Forbidden 表示链接被拒绝访问。

解决方案

针对以上的问题,有以下两种解决方案:

  1. 自己买个 VPS 云主机,将 Hexo 博客部署到云主机上,这样做需要买 VPS 云主机,成本较高。
  2. 将 Hexo 博客同时托管到 Github 和 Coding 上,并通过域名解析服务器 DNSPod 做解析分流,对于不同的路线(国内和国外)访问不同的网站服务(Github 或 Coding)。

具体操作

注册 Coding 账号

这个不用多讲,没什么特别的。

在 Coding 上新建项目



如上图所示,有两点需要注意:

  1. 项目名称和个人昵称必须一致。否则会出现静态文件路径不对的问题,比如:没有样式。例如我的个人昵称是:lijiankun24 ,项目名称也是:lijiankun24。
  2. 项目必须是共有的。

配置 /hexo/_config.yml 文件

打开 /hexo/_config.yml 文件,并修改其中的 deploy 部分如下所示:

1
2
3
4
5
6
7
8
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
branch: master
repo:
github: https://github.com/lijiankun24/lijiankun24.github.io.git
coding: git@git.coding.net:lijiankun24/lijiankun24.git

修改 repo 字段,在原来的 github 后面增加 coding,后面跟上 coding 服务的 git 仓库地址。
配置完成以后,使用 hexo d -g 命令重新生成博客,并部署。会发现,本地编辑博客生成的静态网页文件同时部署到 Github 和 Coding 上面去了。在 Coding 上面如下图所示:



如果第一次使用 coding,可能需要配置 SSH 公钥,配置的方法可以参考 coding 帮助中心

配置 Coding Pages 服务



如上图所示,在开启 Coding Pages 服务时,需要注意部署分支需要与_config.yml配置文件中的 coding 仓库分支要保持一致。例如:我的都是 master 分支。
配置成功以后,可以通过 http://lijiankun24.coding.me/lijiankun24 验证。

通过 DNSPod 配置 DNS 流量分发

使用自己的账号登录 DNSPod,在自己的域名下添加两条记录:

  1. 添加一个主机记录为 @,记录类型为 CNAME,线路类型为 国内,记录值为 xxx.coding.me(例如:lijiankun24.coding.me)的记录;
  2. 再添加一个 主机记录为 www,记录类型为 CNAME,线路类型为 国内,记录值为 xxx.coding.me(例如:lijiankun24.coding.me)的记录;

    需要注意的是,在添加这两条记录时,线路类型均设置为 国内。对于国内的用户实际上是通过 lijiankun24.coding.me 访问 Hexo 博客的,而国外的用户实际上是通过 lijiankun24.github.io 访问 Hexo 博客的。这样配置以后,不仅国内用户访问 Hexo 博客的速度加快了,并且解决了 Github 屏蔽 Baidu 搜索的问题,为之后将 Hexo 博客提交到 Baidu 提供了前提条件。

添加完成以后,如下图所示:



在 Coding 上自定义域名

通过 DNSPod 完成流量分发以后,就可以将自己的域名与 lijiankun24.coding.me 绑定起来。



在上图红色箭头所指的地方,添加自己的域名,添加完成以后,点击绑定按钮,就可以完成域名的绑定,绑定完成以后如红框所示的样子。

验证百度抓取

按照上面步骤配置完成以后,再次使用百度站长的 网页抓取 --> 抓取诊断 抓取以后,结果如下图所示:



如上图所示,现在抓取 http://www.lijiankun24.com,返回的Http头的状态行是:HTTP/1.1 200 OK,表示 Baidu 可以成功地抓取到 http://www.lijiankun24.com 了。

将 Hexo 博客提交到 Google

首先,需要确认自己的博客网站是否被 Google 收录,打开 Google 主页(需要科学上网),输入 site: lijiankun24.com,如果可以搜到,说明被 Google 收录了,如果没有则没有被 Google 收录。如下图所示:



如果没有被 Google 收录,则需要按照以下步骤将博客网站提交到 Google。

在 Google 验证 Hexo 博客网站

验证网站的主要目的就是让 Google 知道,这个网站是你的,这是使用 Google 站长平台更多功能的前提,也是将 Hexo 博客提交到 Google 的第一步。

  1. 登录 Google Search Console,点击添加属性,然后输入 Hexo 博客的网址,添加网站。



  2. 添加网站完成以后,需要验证网站。Google 提供了多种方案验证网站。这里使用 Google 推荐的一种方法,相对简单。



下载上图中红色框中所指示 html 验证文件,并将该 html 验证文件放在域名根目录下,也就是 Hexo 博客根目录下的 source (/hexo/source/)文件下。然后部署到服务器,在浏览器中输入
https://www.lijiankun24.com/google642827cad0b5bb94.html 就可以查看该文件是否上传成功,最后点击验证按钮就可以了。

提交站点地图到 Google

站点地图是一种文件,您可以通过该文件列出您网站上的网页,从而将您网站内容的组织架构告知 Google 和其他搜索引擎。Googlebot 等搜索引擎网页抓取工具会读取此文件,以便更加智能地抓取您的网站。 –嘟嘟

准备站点地图 sitemap

进入 Hexo 博客的根目录,使用下面的命令安装插件

1
npm install hexo-generator-sitemap --save

向 Hexo 的根目录下的 _config.yml 文件中添加如下代码:

1
2
3
# 自动生成sitemap
sitemap:
path: sitemap.xml

然后使用 hexo g 编译博客,如果在 /hexo/public/ 目录下发现 sitemap.xml 文件,则说明成功了。

打开 sitemap.xml 文件,如果发现里面文章链接中的域名都是
yoursite.com 的话,需要将 Hexo 博客站点下 _config.yml 中的 url 修改为自己的域名,如我的修改为 url: www.lijiankun24.com

部署完成以后,访问 http://www.lijiankun24.com/sitemap.xml 地址,结果如下图所示:



将站点地图 sitemap 提交到谷歌站长平台

使用 Google 账号登陆谷歌站长工具,如果之前添加的站点验证通过以后,选择该站点下的 抓取 ---> 站点地图,就可以看到 添加/测试站点地图,填写 sitemap.xml,点击提交即可,如下图所示。



按照以上步骤完成之后,自己的 Hexo 博客就提交到 Google 了,就可以通过 Google 搜索到你博客中相关的内容了。

将 Hexo 博客提交到 Baidu

和 Google 一样,首先需要确认自己的博客网站是否被 Baidu 收录,打开 Baidu 主页,输入site:lijiankun24.com,如果可以搜到,则说明被 Baidu 收录,如果没有搜索到,则说明没有被 Baidu 收录。如下图所示:



如果没有被 Baidu 收录,则需要按照以下步骤将博客网站提交到 Baidu。

在 Baidu 验证 Hexo 博客网站

和在 Google 验证 Hexo 博客网站一样,在 Baidu 验证也是让 Baidu 知道,你是该网站的拥有者,是将 Hexo 博客网站提交到 Baidu 的第一步。

登录百度站长平台,点击 站点管理 ---> 添加站点,如下图所示:



第一步,输入自己的 Hexo 博客地址;第二部,选择站点属性(看着选一下就行);第三步是最关键的,如下图所示:



百度站长平台提供了三种验证方式,我选择使用 CNAME 的方式验证网站。登录 DNSPod,进入用户中心 ---> 域名解析,点击自己的域名,点击添加记录,添加一条主机记录为 OCynuVu7om,记录类型为 CNAME,路线为 默认,记录值为 zz.baidu.com 的记录,如下图所示:



在 DNSPod 中自己的域名下面,记录添加完成以后,回到百度站长平台中验证网站的第三步中,点击 完成验证 即可。

需要注意的是,虽然百度站长平台提示”将 OCynuVu7om.lijiankun24.com 使用 CNAME 解析到 zz.baidu.com”,但是在 DNSPod 添加记录时,主机记录值是 OCynuVu7om,而不是 OCynuVu7om.lijiankun24.com

提交站点地图到 Baidu

准备站点地图 baidusitemap

进入 Hexo 博客的根目录,使用下面的命令安装针对 Baidu 的插件

1
npm install hexo-generator-baidu-sitemap --save

然后在 Hexo 的根目录下的 _config.yml 文件中添加如下代码:

1
2
3
4
5
# 自动生成sitemap
sitemap:
path: sitemap.xml
baidusitemap:
path: baidusitemap.xml

使用 hexo g 编译博客,如果在 /hexo/public/ 目录下发现 baidusitemap.xml 文件,则说明成功了。部署完成以后,访问 http://www.lijiankun24.com/baidusitemap.xml 地址,结果如下图所示:



链接提交

百度站长平台提供链接提交通道,可以提交想被百度收录的链接,百度搜索引擎会按照标准处理,但不保证一定能够收录您提交的链接。详细如下图所示:



一般自动提交比手动提交效果好,在自动提交中从效率上来说:主动推送 > 自动推送 > sitemap –嘟嘟

  1. Baidu Sitemap的方式。在 网页抓取 ---> 链接提交 中选中 自动提交 ---> sitemap选项卡,并输入 Baidu 的 sitemap 网址,点击提交即可,如下图所示:



  2. 自动推送的方式。把如下的 JS 代码放在网页页面中即可:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <script>
    (function(){
    var bp = document.createElement('script');
    var curProtocol = window.location.protocol.split(':')[0];
    if (curProtocol === 'https') {
    bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
    }
    else {
    bp.src = 'http://push.zhanzhang.baidu.com/push.js';
    }
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(bp, s);
    })();
    </script>

最好把上述代码放在 Hexo 生成的每个页面的公共部分,如果使用 NexT 主题,则可以将这段代码放在 /hexo/blog/themes/next/layout/_layout.swig<body> 标签的最后面即可。

  1. 主动推送的方式。需要编写主动推送代码,主动推送编写示例

这篇文章到此就把三部分内容全部介绍完毕,如果有什么问题欢迎指出。

参考资料:

hexo干货系列:(四)将hexo博客同时托管到github和coding – 嘟嘟 MD

百度无法爬取Github Pages静态网站解决方案 – 郭承来

Hexo同时部署在Coding和GitHub上并使用DNSPod分流 – just do IT

部署 hexo 到 github 和 coding 上 – Lneayce

github+hexo提交到百度谷歌搜索引擎 – henvy

hexo干货系列:(六)hexo提交搜索引擎(百度+谷歌) – 嘟嘟 MD

让Baidu和Google收录Hexo博客 – just do IT

hexo-generator-sitemap 生成的sitemap如何配置自定义的域名?