首页 文章

GitHub项目页面的自定义域

提问于
浏览
372

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

我想设置一个自定义域(myexample.com)来提供这个项目页面 . 我想 both myexample.comwww.myexample.com 来提供这些项目页面 .

GitHub pages help表示要在DNS中创建A记录和CNAME记录 . A记录是有道理的,但我不知道在我的DNS中要做什么CNAME记录 .

gh-pages 文档说要为'charlie.github.com'创建一个 CNAME 记录,这是一个用户页面存储库 . 我没有用户页面存储库 - 我只有一个项目存储库和一个 gh-pages 分支,我想用于 myexample.comwww.myexample.com .

我是否需要创建用户页面存储库,以便我可以将我的项目页面用于www.myexample.com和myexample.com?

我会尝试一下,但我想确保它能够正常工作,因为我已经有www.myexample.com直播并且不想犯错误 .

我通过电子邮件向GitHub发送了支持,他们的回复是

据我所知,你不能指向同一个gh页面 .

我发现很难相信他们只支持项目页面的A记录 .

有没有人成功完成过这个?

8 回答

  • 426

    现在事情变得容易多了!

    • 将您的Apex域(@)记录更新为点

    192.30.252.154 192.30.252.153

    • 在github仓库设置中编辑 Custome domain 字段 .

    • www和其他子域名可以更新为CNAME到顶点域 .

  • 0

    截至2013年8月29日,Github's documentation声称:

    警告:项目页面子路径(如http://username.github.io/projectname)不会重定向到项目的自定义域 .

  • 13

    我想分享my steps,这与rynopsuperluminary提供的有点不同 .

    • for A 记录完全相同但是

    • 而不是为 www 创建 CNAME 我宁愿将其重定向到我的空白域名( non-www

    此配置是指preferred domain的指导 . 在每个域提供商上, wwwnon www 的域设置或反之亦然 . 由于我的域名在GoDaddy下,所以在域名设置下我使用 Subdomain Forwarding (301)进行设置 .

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

    master

    通过在 master 分支上创建 CNAME 文件(在我的user repository上查看) .

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

    gh-pages

    通过在 gh-pages 分支上创建相同的 CNAME 文件(在我的project repository上查看) .

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

    作为上述 CNAME 文件的补充,您可能需要在GitHub页面上完全bypass Jekyll processing,方法是在页面repo的根目录中创建名为 .nojekyll 的文件 .

  • 13

    简答

    这些详细的解释很好,但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."

  • 2

    概述

    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地址:

    @: 192.30.252.154
    @: 192.30.252.153
    

    这些是您的内容将从中提供的静态Github IP地址 .

    2.创建CNAME记录

    对于CNAME记录,请将www指向yourusername.github.io . 请注意尾随句号 . 另请注意, this is the username, not the project name . 您还不需要指定项目名称 . Github将使用CNAME file 来确定从哪个项目提供内容 .

    例如

    www: forwardadvance.github.io.
    

    CNAME的目的是将所有www子域流量重定向到GitHub页面,该页面将重定向到裸域 .

    这是我用于自己网站http://nicholasjohnson.com的配置的屏幕截图:

    A and CNAME records required for Github Static Pages

    3.创建CNAME文件

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

    例如

    nicholasjohnson.com
    

    这个文件告诉GitHub使用这个repo来处理这个域的流量 .

    4.等等

    现在等待5分钟,您的项目页面现在应该是实时的 .

  • 2

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

    CNAME file on gh-pages 分支将有一行:

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

    无论您对重定向的偏好(换句话说,无论您在gs-pages分支上的CNAME文件中是什么), with your DNS provider ,您都应该像这样设置它:

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

    所以我明白了 . 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.153192.30.252.154A 条记录

    • 等待名称服务器更新:

    dig yourdomain.com +nostats +nocomments +nocmd

  • 20

    我刚刚发现,如果您使用的是PairNIC,那么您只需启用"Custom DNS"下的"Web Forwarding"设置并提供username.github.io/project地址,它将自动设置两个顶点和子域记录 . 它似乎完全可以通过手动添加记录来完成相同的操作 . 很奇怪 . 无论如何,我花了一段时间才弄明白,所以我想我会分享给别人解决麻烦 .

相关问题