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

我想设置一个自定义域(myexample.com),将提供这个项目页面。我需要myexample.com和www.myexample.com来提供这些项目页面。

GitHub页面帮助说要在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支持,他们的回复是

据我所知,你不能让两者指向同一页。

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

以前有人成功做到过吗?


当前回答

现在事情容易多了!

更新您的Apex域(@)记录到点

192.30.252.154 192.30.252.153

编辑你的自定义域域在你的github回购设置。

www等子域名可以更新为CNAME到apex域名。

其他回答

如果你想知道如何让你的域名显示为www.mydomain.com,而不是将www请求重定向到 Mydomain.com,试试这个:

g -pages分支中的CNAME文件只有一行:

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

无论您对重定向的偏好如何(换句话说,无论在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。”

现在事情容易多了!

更新您的Apex域(@)记录到点

192.30.252.154 192.30.252.153

编辑你的自定义域域在你的github回购设置。

www等子域名可以更新为CNAME到apex域名。

1/23/19更新:

自从我上次回答问题以来,情况已发生了很大变化(向好的方向发展)。这个更新的答案将告诉你如何配置:

根尖(example.com) 子域(www.example.com) HTTPS(可选,但强烈鼓励)

最后,对example.com的所有请求将被重定向到https://www.example.com(如果您选择不使用HTTPS,则为http://)。我总是用www作为我的最终着陆。为什么(1,2),是另一个讨论。

这个答案很长,但并不复杂。我说得太啰嗦了,因为关于这个主题的GitHub文档并不清晰或线性。

步骤1:在GitHub设置中启用GitHub页面

从你的回购,点击标签 向下滚动到GitHub Pages部分。你有两个选择: 选择主分支将处理/README。Md作为你的web index.html。选择主分支/docs文件夹将处理/docs/README。Md作为你的web index.html。 选择一个主题。 请稍候,GitHub正在发布您的网站。通过单击“您的网站已准备好发布”旁边的链接来验证它是否有效

步骤2:在GitHub设置中指定自定义域

在这里输入您的自定义域名并点击保存:

这是一个微妙但重要的步骤。

如果您添加到GitHub Pages站点的自定义域是example.com,那么www.example.com将重定向到example.com 如果您添加到GitHub Pages站点的自定义域是www.example.com,那么example.com将重定向到www.example.com。

如前所述,我建议总是登陆www,所以我输入了www.example.com,如图所示。

步骤3:创建DNS表项

在您的DNS提供商的web控制台中,创建四条A记录和一条CNAME。

A @(又名根尖)的记录:

一些DNS提供商会让你指定@,其他的(如AWS Route 53)你会让子域为空来表示@。在任何一种情况下,这些是要创建的A记录:

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153

检查Github文档,确认这些是最新的ip。

创建一条CNAME记录,将www.example.com指向YOUR-GITHUB-USERNAME.github.io。

这是最令人困惑的部分。

注意YOUR-GITHUB-USERNAME不是GitHub回购名!YOUR-GITHUB-USERNAME的值由这个图表决定。

对于用户页面站点(很可能就是你自己的站点),CNAME条目将是username.github。io,例:

对于组织页面站点,CNAME条目将是orgname.github。io,例:

步骤5:确认DNS表项

通过dig +noall +answer example.com确认您的A记录。它应该返回4个185.x.x。x输入的IP地址。 通过运行dig www.example.com +nostats +nocomments +nocmd确认您的CNAME记录。它应该返回一个CNAME YOUR-GITHUB-USERNAME.github.io

解析/传播这些DNS条目可能需要一个小时左右的时间。一旦他们这样做了,打开你的浏览器http://example.com,它应该会重定向到http://www.example.com

步骤6:SSL (HTTPS)配置可选,但强烈推荐

自定义域工作后,返回到repo设置。如果您已经打开了设置页面,请硬刷新页面。

如果在强制HTTPS复选框下有一条消息,说明它仍在处理中,您将需要等待。您可能还需要点击自定义域部分中的保存按钮来启动强制HTTPS处理。

一旦处理完成,它看起来应该是这样的:

只需单击强制HTTPS复选框,并将浏览器指向https://example.com。它应该重新引导并打开https://www.example.com

就是这样!

GitHub将自动保持您的HTTPS证书最新,并应处理apex到www重定向到HTTPS。

所选的答案很好,但太长了,所以你可能看不清重点:

我在访问www.example.com时遇到了SSL错误,但如果我去example.com,它可以正常工作

如果同样的情况发生在你身上,可能你的错误是在DNS配置中设置:

CNAME www.example.com --> example.com  (WRONG)

但是,你要做的是:

CNAME www.example.com --> username.github.io  (GOOD)

or

CNAME www.example.com --> organization.github.io  (GOOD)

这是我的错误