通过DNS实现多个GitHub Pages和自定义域名

84

我希望有一个用户页面和多个项目页面托管在GitHub Pages上,但只使用一个自定义域名(当然,每个GitHub Pages存储库都有子域名)。所以我的目标如下:

根据我的理解,GitHub Pages只允许在Git存储库根目录的CNAME文件中定义一个CNAME资源记录用于页面(用户页面和项目页面)。我已经尝试了很多方法(在EUserv域名提供商处玩弄DNS记录和头部重定向),但我只能通过一个URL(http://blog.florianwolters.de)访问我的GitHub用户页面。我知道DNS更改可能需要长达两天的时间。
有人能向我解释一下如何实现上述目标吗?我不敢相信这是不可能的,但我也不是DNS等方面的专家。
如果以上不可行:您建议的解决方法是什么?我想要在一个域名下访问所有我的GitHub页面(以及该域名的子域名)。
资源

不可能的。请参阅我的自定义域名无法工作上的CNAME文件中的多个域名 - Bengt
本博客文章详细介绍了这个问题。http://captainwhippet.com/blog/2014/05/11/blog-setup-details.html - Steve Moser
3个回答

80
你可以做到。请注意,所有的DNS CNAME记录都指向同一个主机。

1: github.com/florianwolters/florianwolters.github.com

CNAME文件内容:blog.florianwolters.de DNS CNAME:blog > florianwolters.github.com

2: github.com/florianwolters/pear/tree/gh-pages

CNAME文件内容:pear.florianwolters.de DNS CNAME:pear > florianwolters.github.com

好的,两个CNAME文件的内容和第一个CNAME资源记录已经与您建议的值匹配。我更改了第二个DNS CNAME记录。如果明天它能正常工作,我会报告的。此外,我的问题中仍有一个部分:我必须创建哪些CNAME记录才能通过florianwolters.de和www.florianwolters.de访问blog.florianwolters.de?我无法使其正常工作。即使是头部重定向也不起作用!尽管如此,到目前为止还是非常感谢! - Florian Wolters
2
如果您正在使用像florianwolters.de这样的顶级域名,您必须使用指向204.232.175.78的A记录。这样,您将获得一个重定向到www,这是非常标准的。我认为您还需要创建一个单独的www项目。唯一剩下的问题是如何从www重定向到博客?最好在服务器端完成此操作,涉及某种服务器端语言/框架组合在www子域上运行,在这种情况下,GitHub无法提供太多帮助。示例:github.com/thoughtnirvana/www_redirect - marfalkov
2
你的回答解决了我的问题。现在我可以通过子域名托管尽可能多的项目。太棒了!请查看我的答案进行最终澄清。我已经在服务器端(位于我的域名注册机构)使用了两个简单的头重定向使其运行。这对我的需求来说足够了。之前无法正常工作的原因是我删除了默认的A资源记录(指向我的域名注册机构的IP)。因此,头重定向无法工作。 - Florian Wolters
这还能用吗?看起来Github现在只支持gh-pages分支了...这听起来对吗? - Ryan Angilly
1
非常感谢,它仍然在工作,而且太棒了! - Kalitine

6
您可以使用一个CNAME资源记录或者一个A资源记录,与GitHub Pages一起使用。
因此,总之您需要决定:
  • 要么使用example.orgwww.example.org(将现有的A记录替换为204.232.175.78)...
  • ...或者使用子域名,例如blog.example.org(创建一个新的CNAME记录<username>.github.com)。
现在,您需要选择如何从一个(子)域映射到另一个:
  • 如果使用前者,则可以通过利用所需子域从HTTP头重定向到example.org来使用重定向。
  • 如果使用后者,则必须使用example.orgwww.example.org的标题重定向到所需子域。
另外,请参见GitHub Pages帮助以获取帮助,并查看我的GitHub Pages存储库以获取示例CNAME文件。 编辑: GitHub Pages添加了一个详细的页面,描述如何设置自定义域在这里

你能再澄清一下吗:你说的“...使用来自所需子域到example.org的标题重定向。”是什么意思? 你是指在DNS上创建CName记录吗?DNS CNAME pear --> example.org ?? 还是 DNS CNAME pear --> userename.github.com ?? - elviejo79
1
@elviejo:我相信他的意思是使用HTTP头重定向。 - damd

1

每个页面(用户页面和项目页面)只能在Git存储库根目录的CNAME文件中定义一个CNAME资源记录。

您可以通过在DNS设置中为您的主机(pear)创建指向florianwolters.github.com的CNAME记录,并在存储库的CNAME文件中为pear.florianwolters.de创建一个条目来规避此限制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接