通过 DNS 的多个 GitHub 页面和自定义域
Posted
技术标签:
【中文标题】通过 DNS 的多个 GitHub 页面和自定义域【英文标题】:Multiple GitHub Pages and custom domains via DNS 【发布时间】:2012-05-27 23:53:29 【问题描述】:我希望拥有一个用户页面和多个项目页面,由 GitHub Pages 托管,但在 ONE 自定义域下可用(当然,每个 GitHub Pages 存储库都有子域)。所以我的目标如下:
http://blog.florianwolters.de、http://www.florianwolters.de 和 http://florianwolters.de 下提供一个用户页面 (http://florianwolters.github.com)。 我希望有多少项目页面(例如 http://florianwolters.github.com/pear 可在 http://pear.florianwolters.de 下找到。据我目前的理解,GitHub Pages 只允许在 Git 存储库根目录中的 CNAME
文件中定义的页面(用户页面和项目页面)的 ONE CNAME 资源记录.
我已经尝试了很多事情(在我的域提供商EUserv 处使用 DNS 记录和标头重定向,但我只能通过一个 URL (http://blog.florianwolters.de) 访问我的 GitHub 用户页面。我知道 DNS 更改可能会占用直到两天。
有人可以向我解释一下,我如何才能实现上述目标?我不敢相信这是不可能的,但我也不是 DNS 等方面的专家。
如果上述方法不可行:您建议的解决方法是什么?我确实想访问一个域下的所有 GitHub 页面(以及该域的子域)。
资源
http://help.github.com/pages/ Custom domain for GitHub project pages https://groups.google.com/forum/?fromgroups#!topic/github/AaAuoDK44Ag https://github.com/blog/315-cname-support-for-github-pages http://code.lancepollard.com/custom-domain-github-pages【问题讨论】:
不可能。请参阅My custom domain isn't working上的CNAME 文件中的多个域 这篇博文详细介绍了这个问题。 captainwhippet.com/blog/2014/05/11/blog-setup-details.html 【参考方案1】:对于在 Git 存储库根目录中的 CNAME 文件中定义的页面(用户页面和项目页面),您只能有一个 CNAME 资源记录。
您可以通过在指向 florianwolters.github.com 的 DNS 设置中为您的主机 (pear) 创建 CNAME 记录,并在 pear.florianwolters.de 存储库中的 CNAME 文件中创建条目来规避此问题
【讨论】:
【参考方案2】:您可以使用一个 CNAME资源记录或 一个 A资源和GitHub Pages一起记录。
因此,总而言之,必须做出决定:
您要么使用example.org
和www.example.org
(将现有的A 记录 替换为204.232.175.78
)...
... 或子域,例如blog.example.org
(使用<username>.github.com
创建一个新的CNAME 记录)。
现在,您必须选择如何从一个(子)域映射到另一个:
如果使用第一个,您可以使用从所需子域到example.org
的 HTTP 标头进行重定向。
如果使用后者,您必须使用从 example.org
和 www.example.org
到所需子域的标头重定向。
另外,请参阅 GitHub Pages Help 以获取帮助,并查看我的 GitHub Pages repository 以获取示例 CNAME
文件。
编辑: GitHub Pages 添加了一个详细页面,描述了如何设置自定义域 here。
【讨论】:
您能否进一步澄清:“...使用从所需子域到 example.org 的标头重定向是什么意思。”您的意思是在您的 dns 上创建 CName 记录吗? DNS CNAME 梨 --> example.org ??或者 DNS CNAME pear --> userename.github.com ?? @elviejo:我相信他的意思是通过 HTTP 标头使用重定向。【参考方案3】:你可以做到。请注意,所有 DNS CNAME 入口都指向同一主机。
1: github.com/florianwolters/florianwolters.github.com
CNAME 文件内容:blog.florianwolters.de
DNS CNAME:博客 > florianwolters.github.com
2: github.com/florianwolters/pear/tree/gh-pages
CNAME 文件内容:pear.florianwolters.de
DNS CNAME:梨 > florianwolters.github.com
【讨论】:
好的,CNAME 文件和第一个 CNAME 资源记录的文件内容已经与您的建议值匹配。我更改了第二个 DNS CNAME 记录。我明天会报告,如果它有效。另外,我的问题的一部分仍然存在:我必须创建哪些 CNAME 记录才能通过 florianwolters.de 和 www.florianwolters.de 访问 blog.florianwolters.de?我无法完成这项工作。即使是标头重定向也不起作用?!尽管如此,到目前为止还是谢谢! 如果您使用的是 florianwolters.de 等***域,则必须使用指向 204.232.175.78 的 A 记录。这样你会得到一个重定向到 www,这是非常标准的。我认为您还必须创建一个单独的 www 项目。唯一的问题是你如何从 www 重定向到博客?这需要在服务器端理想地完成,即涉及某种服务器端语言/框架组合以在 www 子域上运行,在这种情况下,github 帮不了你太多。示例:github.com/thoughtnirvana/www_redirect 您的回答是我的问题的解决方案。现在,我可以通过子域托管任意数量的项目。棒极了!请参阅我的答案以获得最终说明。我通过两个简单的标头重定向使其在服务器端(在我的域注册商处)工作。这足以满足我的要求。以前没有用过的原因是,我删除了默认的 A 资源记录(指向我的域注册商的 IP)。因此,标头重定向不起作用。 这还能用吗?看起来 Github 现在只支持 gh-pages 分支……听起来对吗? 非常感谢,它还在工作,太棒了!以上是关于通过 DNS 的多个 GitHub 页面和自定义域的主要内容,如果未能解决你的问题,请参考以下文章
apache_conf 定义401资源和自定义错误页面(另请参阅https://gist.github.com/nielslange/053a3bedfb13d961bedb138a88dc943b)