我的http://github.com个回购中有一个gh-pages
分支。如果我转到http://myuser.github.com/myrepo
我想设置一个自定义域(myexample.com)来提供此项目页面。我希望 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记录。
之前有没有人成功完成这项工作?
答案 0 :(得分:464)
1/23/19更新:
自从我上次回答以来,情况发生了很大变化(好转)。此更新的答案将向您展示如何配置:
最后,对example.com
的所有请求都将重定向到https://www.example.com(如果您选择不使用HTTPS,则为http://)。我总是使用www
作为我的最终登陆。为什么(1,2)是另一个讨论。
这个答案很长但是不复杂。由于关于这个主题的GitHub文档不清楚或不是线性的,所以我很清楚。
GitHub Pages
部分。您有两种选择: master branch
会将/README.md
视为您的网络index.html
。选择master branch /docs folder
会将/docs/README.md
视为您的网络index.html
。Your site is ready to be published at
在此处输入您的自定义域名,然后点击save
:
这是一个微妙但重要的步骤。
example.com
,则www.example.com
将重定向到example.com
www.example.com
,则example.com
会重定向到www.example.com
。如前所述,我建议您始终在www
登陆,以便我如上图所示输入www.example.com
。
在DNS提供商的网络控制台中,创建四条A
条记录和一条CNAME
。
A
@
(又名root apex)的记录:某些DNS提供商会让您指定@
,其他DNS(例如AWS Route35),您将leave the sub-domain blank指示@
。在任何一种情况下,these都是要创建的A
记录:
185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
CNAME
记录,将www.example.com指向YOUR-GITHUB-USERNAME.github.io
。 这是最令人困惑的部分。
请注意YOUR-GITHUB-USERNAME
不 GitHub回购名称! YOUR-GITHUB-USERNAME
的值由this chart确定。
对于用户页面网站(很可能是您的网站),CNAME
条目为username.github.io
,例如:
对于组织网页网站,CNAME
条目为orgname.github.io
,例如:
运行A
确认您的dig +noall +answer example.com
记录。它应该返回您输入的四个185.x.x.x
IP地址。
运行CNAME
确认您的dig www.example.com +nostats +nocomments +nocmd
记录。它应该返回CNAME YOUR-GITHUB-USERNAME.github.io
这些DNS条目可能需要一个小时才能解析/传播。完成后,将浏览器打开至http://example.com
,然后重定向到http://www.example.com
让自定义域工作后,请返回repo设置。如果您已经打开了设置页面,请刷新页面。
如果Enforce HTTPS
复选框下面有消息,说明它仍在处理,则需要等待。您可能还需要点按save
部分中的Custom domain
按钮以启动Enforce HTTPS
处理。
处理完成后,它应如下所示:
只需点击Enforce HTTPS
复选框,然后将浏览器指向https://example.com
即可。它应该重定向并打开https://www.example.com
GitHub会自动使您的HTTPS证书保持最新状态,并且应该通过HTTPS处理www
重定向的顶点。
希望这会有所帮助!!
...
所以我明白了。 James McLaughlin给了我需要的轻推。
为处理www.yourdomain.com和yourdomain.com的gh-pages Project Pages仓库设置自定义域(假设您的仓库中已经有gh-pages分支):
yourdomain.com
的CNAME文件。然后继续推送。cname
条记录。一个用于根尖(@),另一个用于www。两者都指向YOURusername.github.io
。如果您的DNS提供商不支持根apex(@)上的ALIAS
条记录,只需创建指向A
和192.30.252.153
192.30.252.154
条记录
等待名称服务器更新:
dig yourdomain.com +nostats +nocomments +nocmd
答案 1 :(得分:237)
与用户页面相比,documentation在项目页面方面有点令人困惑。感觉你应该做更多,但实际上这个过程非常简单。
涉及:
您的内容将通过http://nicholasjohnson.com格式的网址投放。
访问http://www.nicholasjohnson.com将返回301重定向到裸域。
重定向会尊重路径,因此http://www.nicholasjohnson.com/angular的流量将重定向到http://nicholasjohnson.com/angular。
每个存储库可以有一个项目页面,因此如果您的存储库已打开,您可以拥有任意数量的存储库。
这是过程:
对于A记录,请将@指向以下IP地址:
@: 185.199.108.153
@: 185.199.109.153
@: 185.199.110.153
@: 185.199.111.153
这些是您的内容将从中提供的静态Github IP地址。
对于CNAME记录,请将www指向yourusername.github.io。请注意尾随句号。另请注意,这是用户名,而不是项目名称。您还不需要指定项目名称。 Github将使用CNAME 文件来确定从哪个项目提供内容。
e.g。
www: forwardadvance.github.io.
CNAME的目的是将所有www子域流量重定向到GitHub页面,该页面将重定向到裸域。
以下是我用于自己网站http://nicholasjohnson.com的配置的屏幕截图:
将一个名为CNAME的文件添加到gh-pages分支中的项目根目录。这应该包含您要提供的域。确保你提交并推送。
e.g。
nicholasjohnson.com
此文件告诉GitHub使用此repo来处理此域的流量。
现在等待5分钟,您的项目页面现在应该有效。
答案 2 :(得分:21)
如果您想知道如何让您的域名显示为
www.mydomain.com
,而不是将www
请求重定向到mydomain.com
,试试这个:
gh-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
答案 3 :(得分:15)
这些详细说明很棒,但OP(和我)的混淆可以用一句话解决:“直接DNS到您的GitHub 用户名或组织,忽略特定项目,并在项目存储库中添加适当的CNAME 文件:GitHub将根据存储库中的文件将正确的DNS发送到正确的项目“强>
答案 4 :(得分:13)
截至2013年8月29日,Github's documentation声称:
警告:项目页面子路径(如http://username.github.io/projectname)不会重定向到项目的自定义域。
答案 5 :(得分:3)
现在事情变得容易多了!
答案 6 :(得分:2)
我刚刚发现,如果您使用PairNIC,我只需要启用“自定义DNS”下的“Web转发”设置并提供username.github。 io /项目地址,它将自动为您设置apex和子域记录。它似乎完全符合接受的答案中的建议。但是,它不会让您通过手动添加记录来完成相同的操作。很奇怪。无论如何,我花了一段时间才弄明白,所以我想我会分享给别人解决麻烦。
答案 7 :(得分:1)
选择的答案是好的,但很长,所以您可能没有阅读关键点:
我在访问 www.example.com 时遇到了 SSL 错误,但如果我访问 example.com 则效果很好
如果您遇到同样的情况,可能您的错误是您设置的 DNS 配置:
CNAME www.example.com --> example.com (WRONG)
但是,你必须做的是:
CNAME www.example.com --> username.github.io (GOOD)
或
CNAME www.example.com --> organization.github.io (GOOD)
那是我的错误
答案 8 :(得分:0)
我想分享my steps,这与rynop和superluminary提供的内容略有不同。
A
Record完全相同,但CNAME
创建www
我宁愿将其重定向到我的空白域(non-www
)此配置指的是preferred domain的指导。 www
到non www
的域设置或反之亦然,每个域提供商的域设置可能不同。由于我的域名在GoDaddy下,因此在域名设置下,我使用 Subdomain Forwarding (301)进行设置。
作为将域指向Github存储库的结果,它将为master
和gh-pages
分支提供所有URL,类似于我在下面列出的那些到达首选域:< / p>
掌握
在CNAME
分支上创建master
文件(在user repository上查看)。
http://hyipworld.github.io/
http://www.hyip.world/
http://hyip.world/
gh-pages
在CNAME
分支上创建相同的gh-pages
文件(在project repository上查看)。
http://hyipworld.github.io/maps/
http://www.hyip.world/maps/
http://hyip.world/maps/
作为上述CNAME
文件的补充,您可能需要在网页库的根目录中创建名为.nojekyll
的文件,以便在GitHub页面上完全bypass Jekyll processing。