我有一个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记录。
以前有人成功做到过吗?
概述
当涉及到项目页面时,文档有点令人困惑,而不是用户页面。感觉你应该做更多的事情,但实际上这个过程非常简单。
它包括:
为裸(无www)域设置2个静态A记录。
为www创建一个CNAME记录,它将指向一个GitHub URL。这将为你处理www重定向。
在gh-pages分支的项目根目录中创建一个名为CNAME(大写)的文件。这将告诉Github响应哪个URL。
等待一切繁殖。
你会得到什么
您的内容将通过http://nicholasjohnson.com格式的URL提供。
访问http://www.nicholasjohnson.com将返回一个301重定向到裸域。
重定向将尊重该路径,因此去往http://www.nicholasjohnson.com/angular的流量将被重定向到http://nicholasjohnson.com/angular。
每个存储库可以有一个项目页面,所以如果您的回购是开放的,您可以拥有任意多的项目页面。
流程如下:
1. 创建A记录
对于A记录,将@指向以下ip地址:
@: 185.199.108.153
@: 185.199.109.153
@: 185.199.110.153
@: 185.199.111.153
这些是静态的Github IP地址,您的内容将从中提供服务。
2. 创建CNAME记录
对于CNAME记录,将www指向你的用户名。github.io。注意后面的句号。还要注意,这是用户名,而不是项目名。您还不需要指定项目名称。Github将使用CNAME文件来决定从哪个项目提供内容。
e.g.
www: forwardadvance.github.io.
CNAME的目的是将所有的www子域流量重定向到一个GitHub页面,该页面将301重定向到裸域。
下面是我自己的网站http://nicholasjohnson.com:的配置截图
3.创建CNAME文件
在gh-pages分支的项目根目录中添加一个名为CNAME的文件。这应该包含您想要服务的域。确保你承诺并推动。
e.g.
nicholasjohnson.com
这个文件告诉GitHub使用这个repo来处理到这个域的流量。
4. 等待
现在等待5分钟,您的项目页面现在应该是活动的。
所选的答案很好,但太长了,所以你可能看不清重点:
我在访问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)
这是我的错误
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.