背景

前几天写了个 Jekyll Theme, 想在 Coding 开一个链接进行展示但是遇到了不小的麻烦。

首先我使用的是 Coding, 理论上和 Github 没太大区别。Github 的相同问题可以参考这篇文章1

架构

  • 域名提供:Godaddy
  • DNS 服务商:DNSPOD
  • Pages 服务:Coding

历程

我已经在 Coding 创建了一个博客主页面并已经成功绑定域名szhshp.org ,想在我又开了一个 repo 并希望可以使用demo.szhshp.org进行展示

博客在 Coding 提供的链接是http://szhshp.coding.me/szhshp , 然后szhshp.org通过 DNSPOD 解析到这个域名正常使用。

我把一个新项目demo也生成了 Pages 并获得了链接http://szhshp.coding.me/demo,然而当我访问的时候域名被自动解析到了szhshp.org/demo

当然这是两个不同的项目因此很多文件找不到。

这很明显是域名解析方面的错误, 于是我开始寻找域名方面设置的问题。

首先博客的解析路径:

  1. Godaddy
    • DNS 服务器设置为 DNSPOD
  2. DNSPOD
    • DNSPOD 将szhshp.org CNAME 解析到szhshp.coding.me. (DNSPOD 会自动给你在最后加上一个圆点符号)
  3. Coding Pages
    • szhshp.coding.me/szhshp

这个逻辑丝毫没有问题, 但是我总觉得一个账号不可能只能创建一个演示页面,所以我仔细查看了一下 Coding 的帮助2

后来发现关于自定义域名部分和当年 GitCafe 有些许不同:

首先, 在您的域名管理面板中添加 CNAME 记录指向到 pages.coding.me。然后, 在「Pages 服务」设置页中的自定义域名栏目输入您欲绑定的域名, 点击「保存」即可通过自定义域名访问您的网站。

因此解析路径会变成这样:

  1. Godaddy
    • DNS 服务器设置为 DNSPOD
  2. DNSPOD
    • DNSPOD 将szhshp.org CNAME 解析到szhshp.coding.me.
  3. Coding Pages Main Server
    • pages.coding.me
  4. Coding Pages
    • szhshp.coding.me/xxx

另外当我们在**「Pages 服务」设置页中的自定义域名栏目输入您欲绑定的域名**之后, 需要在 DNS 服务商部分也进行设置:

比如我添加了demo.szhshp.org , 那么就肯定需要在 DNSPOD 处添加一个 *.szhshp.orgCNAME 记录

然后这个子页面会统一解析到Coding Pages Main Server, 再根据 Coding 的设置解析到szhshp.coding.me/xxx, 这样就可以正常访问另一个项目了

子域名解析

例如我想让demo.szhshp.org 转址到szhshp.org/demo.html

三种方案:1. Godaddy 自带的子域名解析的功能, 不过需要 48h 进行反馈, 可能和自定义 DNS 服务商冲突? 2. DNSPOD 也可以设置子域名的解析, 不过好像除了泛解析之外都要付费用户才能使用?3. 因为demo.szhshp.org 正好是另一个项目, 干脆直接在index.html里面写一段 JS 跳转

参考文献

Footnotes

  1. 单个 GitHub 帐号下添加多个 GitHub Pages 的相关问题

  2. Coding Pages 介绍