GitHub项目页面的自定义域

我在我的http://github.com回购之一中有一个gh-pages分支。 如果我去http://myuser.github.com/myrepo GitHub项目页面工作正常

我想设置一个自定义域(myexample.com),将提供这个项目页面。 我希望myexample.comwww.myexample.com都能提供这些项目页面。

GitHub页面帮助说在您的DNS中创buildAlogging和CNAMElogging。 Alogging是有道理的,但我不知道CNAMElogging在我的DNS中logging。

gh-pages文档声明为用户页面存储库“charlie.github.com”创buildCNAMElogging。 我没有用户页面存储库 – 我只有一个项目存储库和一个gh-pages分支,我想用于myexample.comwww.myexample.com

我是否需要创build一个用户页面存储库,以便我可以使用我的项目页面www.myexample.com和myexample.com?

我只是想尝试一下,但是我想确保这个工作正常,因为我已经拥有了www.myexample.com,而且不想犯错误。

我发邮件给GitHub支持,他们的回复是

就我所知,你们不能指向同样的gh-pages。

我很难相信他们只会支持项目页面的Alogging。

有没有人成功地做到这一点?

所以我明白了。 詹姆斯·麦克劳克林 ( James McLaughlin)给了我所需要的微调。

要为处理www.yourdomain.com和yourdomain.com的gh-pages Project Pages回购库设置一个自定义域(假设您已在回购库中拥有一个gh-pages分支):

  1. 从你的项目回购,gh-pages分支。 用yourdomain.com内容创build一个CNAME文件。 承诺然后推。
  2. 在你的DNSpipe理器中,设置两个cnamelogging。 一个用于根尖(@),另一个用于www。 都指向YOURusername.github.io 。 如果您的DNS提供程序不支持根尖端(@)上的ALIASlogging,只需创build指向192.30.252.153192.30.252.154 Alogging
  3. 等待你的名字服务器更新:

    dig yourdomain.com +nostats +nocomments +nocmd

概观

当涉及到项目页面时, 文档有点混乱,而不是用户页面 。 感觉就像你应该做更多的事情,但实际上这个过程是非常简单的。

它涉及:

  1. 为裸(没有www)域设置2静态Alogging。
  2. 为www创build一个指向GitHub URL的CNAMElogging。 这将为您处理wwwredirect。
  3. 在gh-pages分支的项目根目录下创build一个名为CNAME(大写)的文件。 这将告诉Github什么URL回应。
  4. 等待一切传播。

你会得到什么

您的内容将通过http://nicholasjohnson.comforms的url提供。;

访问http://www.nicholasjohnson.com将返回301redirect到裸域。;

该path将受到redirect的尊重,所以到http://www.nicholasjohnson.com/angular的stream量将被redirect到http://nicholasjohnson.com/angular

每个存储库可以有一个项目页面,所以如果你的回购是开放的,你可以有任意多的。

过程如下:

1.创build一个logging

对于Alogging,将@指向以下IP地址:

 @: 192.30.252.154 @: 192.30.252.153 

这些是您的内容将被提供的静态Github IP地址。

2.创build一个CNAMElogging

对于CNAMElogging,将www指向yourusername.github.io。 注意尾随的句号。 另请注意, 这是用户名,而不是项目名称 。 您不需要指定项目名称。 Github将使用CNAME 文件来确定从哪个项目提供内容。

例如

 www: forwardadvance.github.io. 

CNAME的目的是将所有的www子域stream量redirect到一个GitHub页面,将301redirect到裸域。

这里是我用于我自己的网站http://nicholasjohnson.com的configuration截图:;

A和CNAME记录需要Github静态页面

3.创build一个CNAME文件

将名为CNAME的文件添加到gh-pages分支中的项目根目录。 这应该包含你想要服务的域名。 确保你提交并推送。

例如

 nicholasjohnson.com 

这个文件告诉GitHub使用这个回购来处理到这个域的stream量。

等一下

现在等5分钟,你的项目页面现在应该是活的。

如果您想知道如何让您的域名显示为www.mydomain.com而不是将www请求redirect到mydomain.com ,请尝试以下操作:

gh-pages分支上的CNAME文件将包含一行:

www.mydomain.com (而不是mydomain.com

无论您是否喜欢redirect(换句话说,不pipe您在gs-pages分支的CNAME文件中有什么内容), 使用您的DNS提供商 ,您应该像这样设置它:

 A @ 192.30.252.154 A @ 192.30.252.153 CNAME www username.github.io 

简短的回答

这些详细的解释是很好的,但OP的(和我)的困惑可以用一句话来解决: “直接DNS到你的GitHub 用户名组织,忽略具体项目,并添加适当的CNAME 文件在你的项目库:GitHub将发送根据存储库中的文件将正确的DNS转移到正确的项目

我发现在经过一番沮丧之后,如果您使用的是PairNIC ,您只需启用“Custom DNS”下的“Web Forwarding”设置并提供username.github.io/project地址,自动为您设置顶点和子域logging。 这似乎是完全按照接受的答案build议的。 但是,它不会让您通过手动添加logging来执行完全相同的操作。 很奇怪。 无论如何,我花了一段时间才弄明白这一点,所以我想我会分享给其他人救这个麻烦。

我想分享一些与rynop和superluminary提供的有些不同的步骤

  • 对于Alogging是完全一样的,但
  • 而不是为www创buildCNAME ,我宁愿将它redirect到我的空白域( non-www

这个configuration是指首选域的指导。 wwwnon www的域设置或者vss的域设置在每个域提供者上可能是不同的。 由于我的域位于GoDaddy下,所以在域设置下,我使用子域转发 (301)进行设置。

作为将域指向Github存储库的结果,它将为mastergh-pages分支提供所有的URL,类似于我在下面列出的那些转到首选域:

通过在master分支上创buildCNAME文件(在我的用户库上检查它)。

http://hyipworld.github.io/
http://www.hyip.world/
http://hyip.world/

GH-页

通过在gh-pages分支上创build相同的CNAME文件(在我的项目库中检查它)。

http://hyipworld.github.io/maps/
http://www.hyip.world/maps/
http://hyip.world/maps/

除了上面的CNAME文件之外,您可能需要在GitHub页面上完全绕过Jekyll处理 ,方法是在页面回购的根目录中创build一个名为.nojekyll的文件。