如何让百度收录自己的Github Pages

最后更新:

为何百度不收录 Github Pages ???

起初还以为是应为自己写的文章很少关键词检索量不够所以没有被百度收录。
等了有几个月,Google 和 Bing 都收录了,百度还是没有动静,就查了下为啥不会被收录…

结果最后发现因为早些年
百度统计被劫持然后 DDos 攻击了 Github…
对 Github 用户造成了可用性的问题,然后被 Github Ban 掉了,对百度 UA 直接 403。

所以只能靠自己来做一些工作让百度蜘蛛可以收录自己的 Github Pages

具体方式有几种,我选择在国内搭建一个镜像(成本最低,Hexo 支持多个 Git 地址)
针对百度蜘蛛,解析到镜像服务器上以此来达到收录 Github Pages 的效果


❗ 重要 ❗

Coding.net 的静态托管服务已经于 2021年12月30日 下线,请不要再尝试该本方案。
并且现在百度已经可以正常收录 Github Pages 托管的内容了,已经不再需要使用国内镜像的方式来达成被百度收录的目的了。

尊敬的 CODING 用户:
因 CODING 产品战略调整,您的 XXX 团队正在使用的 CODING 网站托管服务(旧版),将于 2021 年 12 月 30 日停止服务,届时您项目下的网站将无法访问。项目源码依然保留在您的 CODING 代码仓库中,可部署于其他第三方服务,请尽快迁移您的网站以免受到影响。

不过现在百度收录的机制比较奇怪,快一些的一个月内就能收录,慢一些的长达半年才会被收录。如果不着急的话可以耐心慢慢等收录。着急的话可以考虑各平台的 Serverless 服务来托管静态页面(是收费的)。


国内代码托管平台有很多,这次尝试了两个,一个是 码云,一个是 Coding.net
别问我为什么不用 vps,没钱!!!

码云操作一同之后发现自定义域名需要会员,Coding 不需要。

就选择了 Coding,但是需要实名认证

1、注册


这个都不需要多说了吧….直接上链接吧。Coding.net SignUp

2、创建代码托管仓库


注册好了之后和使用 Github 一样,创建一个项目,选择 代码托管项目

选择项目模板

项目名称随便填写,我直接填写的用户名因为 Github Pages 是这样要求的,但是 Coding 并没有这个要求;
项目标识是你的 Git 仓库标识,起一个自己好记得就行。我输入的 blog,其实填写了项目名称会自动填写进去的。(这个是可以修改的,相应的也要修改本地 Git 的 Origin Url

然后选择 Git仓库
项目描述就随便填咯,反正也就自己用,后边不满意了也可以在项目设置里边修改。
创建项目

3、绑定 SSH 公钥


创建完成之后在个人设置里边添加自己的 SSH 公钥,如果已经配置 Github Pages 的话这个也不用多说了吧

配置完成之后在本地的 Git Bash 内执行 ssh -T git@e.coding.net,加入信任主机

途中遇到了 Permission denied (publickey). 这个问题 😂

原因是自己本地 Git 配置的默认 Keygen 是另外一个,然后忘记自己用的是哪个 Keygen 了,尴尬一直在反复添加我觉得对的那个到 Coding 上,我说怎么一直被拒绝…

4、在 Hexo 内添加 Coding.net 上的仓库


打开自己本地的 Hexo 项目目录,找到根目录下的 _config.yml 文件,在最底部找到 deploy 项,
修改 repo

deploy:
  type: git
  repo:
    github: https://github.com/{username}/{repositoryname}.github.io
    coding: https://e.coding.net//{repositoryname}/{gitname}.git

Hexo 提供了快速方便的一键部署功能,让您只需一条命令就能将网站部署到服务器上。

然后直接使用 hexo deploy/hexo d 就可以自动部署到两个远程仓库中了。

5、部署 Coding Pages


回到 Coding.net 项目中 找到项目左侧菜单中的 构建与部署 下的 静态网站

点击立即发布静态网站
部署Coding Pages

网站名称不重要,随便填自己能看明白就好;
部署来源选择 本项目仓库
触发机制 自动部署
勾选 代码更新时自动部署,选择默认的 推送到 Master 时触发构建 这个是看你需要部署的是主线还是分支了,选择自己用的就好。
填写静态网站信息

点击保存,完成创建。

完成部署
这时候在页面中会显示你的 Coding Pages 访问地址,点击立即部署,这时候正常的话就会部署成功了。

然后点击在右上角的设置,
进入 Coding Pages 设置后滑动到底部,将自己的域名添加到自定义域名列表中。

6、解析域名到 Coding Pages


在自己域名服务商的控制台添加解析记录,类型为 CNAME 这些应该都不用多说了吧。
对应之前的解析记录增加不同的解析路线。
域名解析

要注意的是如果只是想让百度蜘蛛爬取 Coding Pages,正常访问还是走的 Github Pages 的话,解析线路要设置成 百度
(如果想要国内访问 Coding Pages,海外 Github Pages 的话,Coding 的解析路径设置成默认,Github 设置成海外
添加解析记录

等待解析生效就可以在百度的 站长平台 提交 sitemap 让百度收录了

完成


问题

申请 SSL/TLS 证书失败

Coding Pages 是免费提供 ssl/tls 证书的,这样以来部署的博客就支持 https 访问,证书到期前一周,系统自动续签。

但是按照我的这个流程下来申请证书会失败,原因是域名解析的问题,
我的默认解析是到 Coding Pages 的,但是海外线路是解析到 Github Pages 上,
先停用 Github Pages 的解析再申请,等证书申请成功后再恢复解析即可。

部署失败 EvilType: 21000:综合

在最初的 Coding Pages 部署成功之后我在百度站长平台提交了 sitemap.xml

但是我重新提交了新的文章之后,部署就出现了问题,
原因是 Coding Pages 部署接入了腾讯云的 TMS 文本内容安全系统,
TMS 识别到我的文章内有违规内容,从而部署失败,导致百度蜘蛛爬取 404(站点都没起来怎么爬取…)

但是我检查了好几遍并没有发现违规的内容,所以邮件联系了 Coding.net,
官方回复是:

您好,由于相关政策因素,目前 Pages 的部署接入了系统级的自动审核,系统对于 Pages 的内容进行非常严格的排查,若是部署网站中出现涉政,涉黄,广告,链接 等内容,系统会自动判别为违规,无法部署成功,具体的违规内容涉及方向您可以参考 T-Sec 天御文本内容安全判别标准进行修正:https://cloud.tencent.com/product/tms ,给您造成的不便非常抱歉。

我加粗了问题出现的部分,不知道这个 TMS 管控是怎么识别链接的,
现阶段的日志文件看只要我的文章内出现了一些引用链接,就会提示 EvilType: 21000:综合
Coding Pages 的自动部署就会失败:

2020/01/16 15:44:21 Fetching depot archive:
  Ref: refs/heads/master
  CommitSHA: 974e01660df7063b4d703d7286ae1e8f7dbd9538
2020/01/16 15:44:23 Extracting depot archive.
2020/01/16 15:44:24 The following file contains offending content:
2020/01/16 15:44:24 - Path: 2019/CSS-text_truncation/index.html
2020/01/16 15:44:24 - EvilType: 21000:综合

再次询问客服,回复:

目前是第三方做的检测,我们也在和第三方沟通,还请你耐心等待。

头疼,等一段时间再看吧。如果可以我应该会在之后更新文章,实在不行的话,在看看其它的代码托管平台。

  • 2020.01.16 15:52

尊敬的 CODING 用户:关于 pages 部署时提示文件内容违规问题,我们这边已经联系开发进行定位,目前为了不影响用户使用,我们暂时下线该审查功能,您只需要重新部署一下 pages 即可。

23333,刚刚把文章编辑完,就收到 Coding.net 的通知,现在可以正常部署了,百度收录完成。但是不知道等审查重新上线还会不会被提示违规。

  • 2020.01.16 16:47

2020 年 2 月 18 日更新

尝试了几种方法,一直都是链接提交成功了,但是百度抓取网页,查看抓取频率一直都是 0,但是抓取诊断一直都是成功的。
不知道什么原因,后边在尝试一下。

  • 添加 robots.txt 无效
  • 修改 DNS 解析 无效

2020 年 6 月 15 日更新

突然被百度收录了,也不知道是为啥….因为 CodingNet 的自动部署服务关闭了,所以我国内镜像被我取消了,但是这次突然被收录了。