如何解决GitHub Pages自定义域名下多站点无法正常访问的问题?
修复GitHub Pages子仓库站点被自定义域名覆盖的问题
嘿,我来帮你搞定这个问题~你遇到的情况其实是GitHub Pages自定义域名的一个常见坑:当你给根仓库stasmotorny.github.io设置了自定义域名frontdev.pp.ua后,GitHub会把这个域名设为你账号下所有Pages站点的默认路由,导致其他子仓库的路径被直接覆盖,所以访问stasmotorny.github.io/photographer/才会跳转到主域名的首页。
下面是两种可行的修复方案,你可以根据自己的需求选择:
方案1:给子仓库配置二级域名(推荐,更清晰)
如果希望每个子站点都有独立的访问地址,这个方法最合适:
- 先去你的域名DNS管理后台,添加一条CNAME记录:
- 主机记录填
photographer(对应你要设置的二级域名前缀),记录值填stasmotorny.github.io。
- 主机记录填
- 打开GitHub上的
photographer仓库,进入「Settings」→「Pages」页面,在「Custom domain」输入框里填photographer.frontdev.pp.ua,然后点击「Save」。 - 等个10-30分钟让DNS解析生效,之后就能通过
photographer.frontdev.pp.ua正常访问这个子站点了。 - 其他子仓库也可以用同样的方法,分别配置不同的二级域名。
方案2:取消全局自定义域名,保留子路径访问
如果你更习惯用stasmotorny.github.io/photographer/这种子路径访问,那就这么操作:
- 进入根仓库
stasmotorny.github.io的「Settings」→「Pages」页面,把「Custom domain」里的frontdev.pp.ua删掉,点击「Save」。 - 这时候根站点会恢复到
stasmotorny.github.io访问,同时所有子仓库的路径也能正常打开了。 - 要是还想保留
frontdev.pp.ua访问根站点,可以在根仓库的配置文件里(比如Jekyll的_config.yml)设置url: https://frontdev.pp.ua,同时保持DNS记录不变。不过这种情况下,子站点只能通过stasmotorny.github.io/xxx/访问,没法用自定义域名的子路径。
几个关键提醒
- GitHub Pages本身不支持在同一个自定义域名下挂载多个子仓库的站点,要么用二级域名区分,要么放弃全局自定义域名的覆盖。
- 修改DNS后,可以在终端用
nslookup photographer.frontdev.pp.ua命令验证解析是否生效。 - 记得确认每个子仓库的GitHub Pages都已经正确开启,并且分支设置是对的(一般是
main或者gh-pages分支)。
内容的提问来源于stack exchange,提问作者Stas Motorny




