我有一个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记录。

以前有人成功做到过吗?


当前回答

简短的回答

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

其他回答

我想分享我的步骤,这与rynop和superluminary提供的步骤有点不同。

A唱片公司是完全一样的,但是 而不是为www创建CNAME,我更喜欢重定向到我的空白域(非www)

该配置引用了首选域的引导。www到非www的域设置或反之,在每个域提供程序上可以是不同的。因为我的域在GoDaddy下,所以在域设置下,我使用子域转发(301)设置它。

作为指向Github存储库的域的结果,它将给出master和gh-page的所有url。

除了上面的CNAME文件,你可能需要完全绕过GitHub Pages上的Jekyll处理,在你的页面repo根目录下创建一个名为.nojekyll的文件。

简短的回答

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

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

我在访问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)

这是我的错误

现在事情容易多了!

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

192.30.252.154 192.30.252.153

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

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

I just discovered, after a bit of frustration, that if you're using PairNIC, all you have to do is enable the "Web Forwarding" setting under "Custom DNS" and supply the username.github.io/project address and it will automatically set up both the apex and subdomain records for you. It appears to do exactly what's suggested in the accepted answer. However, it won't let you do the exact same thing by manually adding records. Very strange. Anyway, it took me a while to figure that out, so I thought I'd share to save everyone else the trouble.