我的一个http://github.com回购中有一个 gh-pages
分支 . 如果我去http://myuser.github.com/myrepo,GitHub项目页面工作正常
我想设置一个自定义域(myexample.com)来提供这个项目页面 . 我想 both myexample.com
和 www.myexample.com
来提供这些项目页面 .
GitHub pages help表示要在DNS中创建A记录和CNAME记录 . A记录是有道理的,但我不知道在我的DNS中要做什么CNAME记录 .
gh-pages
文档说要为'charlie.github.com'创建一个 CNAME
记录,这是一个用户页面存储库 . 我没有用户页面存储库 - 我只有一个项目存储库和一个 gh-pages
分支,我想用于 myexample.com
和 www.myexample.com
.
我是否需要创建用户页面存储库,以便我可以将我的项目页面用于www.myexample.com和myexample.com?
我会尝试一下,但我想确保它能够正常工作,因为我已经有www.myexample.com直播并且不想犯错误 .
我通过电子邮件向GitHub发送了支持,他们的回复是
据我所知,你不能指向同一个gh页面 .
我发现很难相信他们只支持项目页面的A记录 .
有没有人成功完成过这个?
8 回答
现在事情变得容易多了!
在github仓库设置中编辑 Custome domain 字段 .
www和其他子域名可以更新为CNAME到顶点域 .
截至2013年8月29日,Github's documentation声称:
我想分享my steps,这与rynop和superluminary提供的有点不同 .
for
A
记录完全相同但是而不是为
www
创建CNAME
我宁愿将其重定向到我的空白域名(non-www
)此配置是指preferred domain的指导 . 在每个域提供商上,
www
到non www
的域设置或反之亦然 . 由于我的域名在GoDaddy下,所以在域名设置下我使用 Subdomain Forwarding (301)进行设置 .作为将域指向Github存储库的结果,它将为
master
和gh-pages
分支提供所有URL,类似于我在下面列出的那些到达首选域:master
通过在
master
分支上创建CNAME
文件(在我的user repository上查看) .gh-pages
通过在
gh-pages
分支上创建相同的CNAME
文件(在我的project repository上查看) .作为上述
CNAME
文件的补充,您可能需要在GitHub页面上完全bypass Jekyll processing,方法是在页面repo的根目录中创建名为.nojekyll
的文件 .简答
这些详细的解释很好,但OP的(和我的)混淆可以用一句话来解决: "Direct DNS to your GitHub username or organization, ignoring the specific project, and add the appropriate CNAME files in your project repositories: GitHub will send the right DNS to the right project based on files in the respository."
概述
documentation对于 project pages 来说有点混乱,而不是 user pages . 感觉你应该做更多,但实际上这个过程非常简单 .
它涉及:
为裸(无www)域设置2个静态A记录 .
为www创建一个CNAME记录,该记录将指向GitHub URL . 这将为您处理www重定向 .
在gh-pages分支上的项目根目录中创建名为CNAME(大写)的文件 . 这将告诉Github要响应的URL .
等待一切传播 .
你会得到什么
您的内容将通过http://nicholasjohnson.com表单的网址提供 .
访问http://www.nicholasjohnson.com将返回301重定向到裸域 .
重定向将遵循该路径,因此到http://www.nicholasjohnson.com/angular的流量将重定向到http://nicholasjohnson.com/angular .
每个存储库可以有一个项目页面,因此如果您的存储库已打开,您可以拥有任意数量的存储库 .
这是过程:
1.创建A记录
对于A记录,将@指向以下ip地址:
这些是您的内容将从中提供的静态Github IP地址 .
2.创建CNAME记录
对于CNAME记录,请将www指向yourusername.github.io . 请注意尾随句号 . 另请注意, this is the username, not the project name . 您还不需要指定项目名称 . Github将使用CNAME file 来确定从哪个项目提供内容 .
例如
CNAME的目的是将所有www子域流量重定向到GitHub页面,该页面将重定向到裸域 .
这是我用于自己网站http://nicholasjohnson.com的配置的屏幕截图:
3.创建CNAME文件
将名为CNAME的文件添加到gh-pages分支中的项目根目录 . 这应该包含您要提供的域 . 确保你提交并推送 .
例如
这个文件告诉GitHub使用这个repo来处理这个域的流量 .
4.等等
现在等待5分钟,您的项目页面现在应该是实时的 .
CNAME file on gh-pages 分支将有一行:
www.mydomain.com
(而不是mydomain.com
)无论您对重定向的偏好(换句话说,无论您在gs-pages分支上的CNAME文件中是什么), with your DNS provider ,您都应该像这样设置它:
所以我明白了 . James McLaughlin给了我需要的轻推 .
要为处理www.yourdomain.com和yourdomain.com的gh-pages Project Pages仓库设置自定义域(假设您的仓库中已经有gh-pages分支):
从您的项目仓库,gh-pages分支 . 创建一个内容为
yourdomain.com
的CNAME文件 . 承诺再推 .在DNS管理器中,设置两个
cname
记录 . 一个用于根尖(@),另一个用于www . 两者都指向YOURusername.github.io
. 如果您的DNS提供商不支持根apex(@)上的ALIAS
记录,只需创建指向192.30.252.153
和192.30.252.154
的A
条记录等待名称服务器更新:
dig yourdomain.com +nostats +nocomments +nocmd
我刚刚发现,如果您使用的是PairNIC,那么您只需启用"Custom DNS"下的"Web Forwarding"设置并提供username.github.io/project地址,它将自动设置两个顶点和子域记录 . 它似乎完全可以通过手动添加记录来完成相同的操作 . 很奇怪 . 无论如何,我花了一段时间才弄明白,所以我想我会分享给别人解决麻烦 .