GitHub Pages

很早之前我就记得某篇讲hexo的文章里提到每个GitHub只能拥有一个GitHub Pages页面,所以后来一直不敢在自己的帐号底下添加除blog外的其他GitHub Pages项目。直到今天仔细研究了下GitHub的规则,才发现上面那句话有很大的问题。

这篇文章主要是讲github下多个GitHub Pages项目相关以及自定义域名访问的问题,没太多技术上的东西,基本上都是属于GitHub的文档意译和解释,英语好的可以直接看这官网这两篇FAQ:

About custom domains for GitHub Pages sites

User, Organization, and Project Pages

注:虽然全文基本上都在讲GitHub Pages,但我个人亲测这些规则也都适用于GitCafe Pages,两者没有本质区别。 所以像我一样双线部署blog的可以安心地把GitHub的东西搬到GitCafe来。不过为了行文方便,下文不再特意强调GitCafe Page,均以GitHub Pages代指("Coding"的是否也如此并不清楚,有心人可以自测)

场景

以我个人为例,我在GitHub上已经有了一个和用户名同名的GitHub Pages项目当作个人主页(chitanda.github.io),但是我现在又有了几个想法:

再在GitHub上弄一个GitHub Pages项目当作我的demo页面展示,而不是在原先的blog项目下加子目录(一来访问url不好看,二来很多主题会强制对所有项目内的文件添加样式,影响展示效果)

同时demo页面的访问链接是我自定义的一个域名(如:是demo.chitanda.me或者demo.chitanda.github.io而不是chitanda.github.io/demo)

那么上面两个要求,GitHub能否都满足呢?卖个关子先,结论放在下文。

GitHub Pages的分类及区别

根据官方文档,GitHub Pages分为两类:个人/组织主页以及项目主页,两者基本上没啥区别,但是有以下几点不同:(该文场景下个人和组织帐号没什么区别,所以下文为了行文方便将统一用个人主页代指)

个人主页必须要和用户的GitHub帐号同名,所以每个用户有且只能有一个repo作为个人主页,且必须是/.github.io的形式;而项目主页的命名则没有这种限制,且数量有任意多个。

不考虑绑定的自定义域名的前提下,个人主页的GitHub二级域名为.github.io;项目主页的GitHub二级域名为.github.io/,没有..github.io这种方式

个人主页的展示内容以master分支里的文件为准;而项目主页的展示内容以gh-pages分支内的文件为准

从上面的分析可以发现两个问题已经解决掉一个半了。那么剩下来的问题就是如何配置一个项目主页并绑定自定义域名了。

项目主页的建立和自定义域名配置

注:配置过程和个人主页一模一样,如果之前配置过个人主页的,可以跳过这部分内容了

建立项目主页

新建一个repo,repo名字随意。

点进repo主页然后点击右面的Settings,页面往下拉到GitHub Pages部分,选择Launch automatic page generator>Continue to layouts>Publish page即可.(由于大部分情况下并不用默认的页面和样式,所以这里不需要太纠结于内容编辑)

这样一个项目主页就建立完成了,此时可以用.github.io/访问到了。

绑定自定义域名

在项目的repo里新建一个CNAME文件,并将不带协议名的裸域名写进去(demo.chitanda.me而不是http://demo.chitanda.me/)

这一步可以参考官方文档

到你域名的DNS服务商里给对应的二级域名添加CNAME解析到.github.io(和个人主页的配置相同)

等待DNS生效,具体时间和服务商有关(十几分钟到几小时都有可能)。

如果不确定自己的解析是否生效了,可以在linux系统下用dig命令来检测.参考官方文档

GitHub和GitCafe双线部署的小tips

上面的配置对于单线部署的来说已经完成了,不过对于双线部署的用户而言,有几个小问题需要注意下

DNS服务商里要按照来源对对应的二级域名做分流配置。(具体过程可以参考此处

如果想要所有用户都可以用example.com/project的方式访问到repo,GitHub和GitCafe的repo名字必须相同,否则会导致有一边跳404

可以参考我这里的例子:GitHub上的项目主页名字为demo,GitCafe上的项目主页名字为demos,则不翻墙的情况下国内用户访问chitanda.me/demo会跳404,而用demo.chitanda.me则正常(另外同个链接在翻墙和不翻墙的情况下看到的页面不同,也是分线部署的功劳)

总结

聊胜于无的总结。对于上面提到的几个问题,也有了答案:

每个GitHub帐号下只能有1个个人主页repo,但是可以有不限数量的项目主页repo。

没有自定义域名的情况下,项目主页的访问链接只能是.github.io/而不是..github.io

GitCafe添加GitHub Pages后必须要自己本地同步文件上去,而不能像GitHub那样一键建站,GitCafe每个repo初始化页面的代码是有步骤略过去的,新手的话一开始可能同步不了。建议看他们的帮助

你可能感兴趣的:(GitHub Pages)