在Github Pages上面托管了自己的静态博客,经过一段时间的运行发现自己网站的流量基本都是来自与谷歌、必应、搜狗等等搜索引擎,确没有百度的搜索引擎的流量,最后谷歌一下发现原因是:

1
2
3
百度爬取GitHub太频繁了,甚至引起了GitHub的服务不稳
定,最后GitHub直接把百度屏蔽了,也就是说,所有托管
到GitHub Pages上的静态博客都是无法被百度搜索到。

可以用如下的方法进行验证:
打开百度站长平台—>网页抓取—->抓取诊断。然后点击抓取。完成之后发现抓取状态是失败。这时候点击进入详情发现,返回的HTPP状态是HTTP/1.0 403 Forbidden(403表示链接被拒绝)。如下:


解决这个问题可以有很多的方案,比如:

  1. 自己买个VPS云主机,将自己的博客发布到云主机上面。这个做法的缺点是:成本较高,我们采用GitHub Pages托管静态博客就是为了节省成本。所以这种方案显然是不可行的。
  2. 将自己的服务托管到Coding上(前身是GitCafe,是国内模仿了一个GitHub,他们的关系可以理解成百度和谷歌的关系)。Coding完全模仿了GitHub 也提供了静态博客Pages服务。如果目前客户只是国内的用户,方案二应该是最简单可行的方案
  3. 将自己的博客分别搭建在Coding Pages和GitHub Pages上,然后配置DNS的时候选择让国内的线路流量打到Coding上,其他的线路流量打到GitHub上。因为百度在国内,所以百度抓取的时候会去Coding上面抓取。所以这种方案应该是最理想的方案。

下面是方案三的具体实现

将静态Pages同时托管到Coding和GitHub上

注册Coding并开启Pages服务

这个过程和GitHub的配置基本一样,只需要注意如下五点:

1 项目的名称必须和用户名一致。例如我的用户名叫:guochenglai,项目名称也应该叫:guochenglai。否则会出现静态文件路径不对的问题。比如没有样式。
2 项目必须是共有的。
3 开启Pages的时候注意分支问题。你项目的分支在master,但是pages服务默认分支不是,这个记得修改。
4 需要将你的CNAME文件也推送到Coding项目的根目录上
5 需要绑定自己的域名,如下图:

验证Coding Pages配置成功可以在浏览器输入Pages服务地址:guochenglai.coding.me(改成你的项目名和用户名)如果网页正常出现。说明配置成功。

将Pages实现双部署

修改hexo的根配置文件。将deploy选项修改如下:

# Deployment  
## Docs: https://hexo.io/docs/deployment.html  
deploy:   
  type: git  
  branch: master  
  repo:   
    github: git@github.com:guochenglai/guochenglai.github.io.git ##这里是你的GitHub Pages项目  
    coding: git@git.coding.net:guochenglai/guochenglai.git ## 这里是你的Coding项目

注册dnspod配置dns流量分发

因为我的域名是在阿里云购买的。所以这里已阿里云使用dnspod解析域名为例。

注册一个dnspod账号

注册dnspod,并在域名解析页面添加自己的域名如下:

点击配置的域名,会将你以前在阿里云配置的域名解析信息导入,前面两条是阿里云上面配置的域名后面两条是dnspod默认添加的可以不管。页面如下:

修改阿里云的域名服务器

找到如下的页面:
![][5]
将DNS服务器修改为如下两个

[5]: http://7xutce.com1.z0.glb.clouddn.com/20160926147488381465618.jpg?imageView2/0/format/jpg
f1g1ns1.dnspod.net   

f1g1ns2.dnspod.net

dnspod配置流量分发

页面的信息如下:

主机记录 记录类型 线路类型 记录值 权重 MAX优先级 TTL说明
@ A 默认 192.30.252.153 —- —- 6000 国外Github IP的配置
@ A 默认 192.30.252.154 —- —- 6000 国外Github IP的配置
@ CNAME 国内 guochenglai.coding.me. —- —- 6000 国内域名别名
WWW CNAME 默认 guochenglai.github.io. —- —- 6000 国外WWW域名别名
WWW CNAME 国内 guochenglai.coding.me. —- —- 6000 国域WWW域名别名

验证百度抓取

对比抓取失败需要关注两个点:
1 网站IP发生了变化,变成了国内的Coding的IP
2 抓取状态变成了200表示已经成功
如果上面两点都满足说明你的网站已经可以被百度抓取了。剩下的就是等待被百度收录然后建立索引(这个时间一周到一个月不等)。