GitHub项目页面的自定义域
我在我的http://github.com回购之一中有一个gh-pages
分支。 如果我去http://myuser.github.com/myrepo GitHub项目页面工作正常
我想设置一个自定义域(myexample.com),将提供这个项目页面。 我希望myexample.com
和www.myexample.com
都能提供这些项目页面。
GitHub页面帮助说在您的DNS中创buildAlogging和CNAMElogging。 Alogging是有道理的,但我不知道CNAMElogging在我的DNS中logging。
gh-pages
文档声明为用户页面存储库“charlie.github.com”创buildCNAME
logging。 我没有用户页面存储库 – 我只有一个项目存储库和一个gh-pages
分支,我想用于myexample.com
和www.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分支):
- 从你的项目回购,gh-pages分支。 用
yourdomain.com
内容创build一个CNAME文件。 承诺然后推。 - 在你的DNSpipe理器中,设置两个
cname
logging。 一个用于根尖(@),另一个用于www。 都指向YOURusername.github.io
。 如果您的DNS提供程序不支持根尖端(@)上的ALIAS
logging,只需创build指向192.30.252.153
和192.30.252.154
A
logging -
等待你的名字服务器更新:
dig yourdomain.com +nostats +nocomments +nocmd
概观
当涉及到项目页面时, 文档有点混乱,而不是用户页面 。 感觉就像你应该做更多的事情,但实际上这个过程是非常简单的。
它涉及:
- 为裸(没有www)域设置2静态Alogging。
- 为www创build一个指向GitHub URL的CNAMElogging。 这将为您处理wwwredirect。
- 在gh-pages分支的项目根目录下创build一个名为CNAME(大写)的文件。 这将告诉Github什么URL回应。
- 等待一切传播。
你会得到什么
您的内容将通过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截图:;
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
截至2013年8月29日, Github的文档声称:
警告:像http://username.github.io/projectname这样的项目页面子path不会被redirect到项目的自定义域。;
简短的回答
这些详细的解释是很好的,但OP的(和我)的困惑可以用一句话来解决: “直接DNS到你的GitHub 用户名或组织,忽略具体项目,并添加适当的CNAME 文件在你的项目库:GitHub将发送根据存储库中的文件将正确的DNS转移到正确的项目。 “
我发现在经过一番沮丧之后,如果您使用的是PairNIC ,您只需启用“Custom DNS”下的“Web Forwarding”设置并提供username.github.io/project地址,自动为您设置顶点和子域logging。 这似乎是完全按照接受的答案build议的。 但是,它不会让您通过手动添加logging来执行完全相同的操作。 很奇怪。 无论如何,我花了一段时间才弄明白这一点,所以我想我会分享给其他人救这个麻烦。
我想分享一些与rynop和superluminary提供的有些不同的步骤 。
- 对于
A
logging是完全一样的,但 - 而不是为
www
创buildCNAME
,我宁愿将它redirect到我的空白域(non-www
)
这个configuration是指首选域的指导。 www
到non www
的域设置或者vss的域设置在每个域提供者上可能是不同的。 由于我的域位于GoDaddy下,所以在域设置下,我使用子域转发 (301)进行设置。
作为将域指向Github存储库的结果,它将为master
和gh-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
的文件。