GitHub Pages的CNAME文件是否可以包含多个域名?

64

Github Pages的CNAME文件可以包含多个域名吗?

示例文件:

reggi.com
www.reggi.com
blog.reggi.com
7个回答

79
不,这是不可能的。请参考GitHub帮助文档,其中解释了如下内容:

确保您的CNAME文件中只有一个域名列出。如果您希望将多个域名指向同一页面,您需要为其他域名设置重定向。大多数域名注册商和DNS主机都向其客户提供此服务。


16

这里有一种方法,是使用 HTML 重定向的 Github-only 解决方案。

  1. 创建一个额外的仓库。
  2. 将其配置为使用附加域名的 Github Pages。
  3. 添加一个包含以下内容的 index.html 文件。
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Redirecting to https://example.com</title>
    <meta http-equiv="refresh" content="0; URL=https://example.com">
  </head>

  <link rel="canonical" href="https://example.com">
</html>

1
我已经使用PowerShell按页面实现了这个。https://gist.github.com/CraigChamberlain/41ec4343d4fb417e082ecac72fea2de2 - Craig.C
这个会如何与网络爬虫等工具一起使用?预览分享呢? - iuliu.net
@iuliu.net 这是一种比较复杂的话题 - 它在文章中有很好的文献资料,一般的答案是HTML规范重定向大多数情况下都没问题,因为目标页面是被跟踪和可靠的。预览通常也能正常工作 - 这里有一篇文章 - 基本上,它可以正常工作,大多数搜索引擎都可以优雅地处理它,但它可能会产生一些负面影响。 - Matthew Strasiotto

3
只需要一个DNS记录即可将reggi.com或www.reggi.com指向username.github.io。
Github会自动将两者都指向username.github.io。
有了上述设置,您可以通过以下方式访问username.github.io/blog:
blog.reggi.com(包含blog.reggi.com的CNAME文件) 或 reggi.com/blog 或 www.reggi.com/blog
甚至可以:
blog.reggi.com/blog(包含blog.reggi.com的CNAME文件)
希望这能帮到您。对我来说,这一度超出了我的能力范围。

3
您在CNAME文件中只能有一个域名。此外,您可以在其他域上设置转发(可选地使用掩码)。
不使用掩码时,它就像是将您的原始网站重定向到新网站,浏览器中的URL将显示您的原始网站。
使用掩码时,它将提供来自您原始网站的内容,并且浏览器中的URL将显示新的网站。
我已经为我的博客设置了带掩码的转发。您可以查看以下链接以了解其工作原理。
原始博客:http://hemanshubhojak.com
转发博客:http://batcode.net

4
第二个链接现在已经失效了(2021年6月12日)。 - Greg Hurrell

2

以下是Ivan Zuzak的观点。如果您想将blog.reggi.com 重定向到 reggi.com,那么您无法在Jekyll的CNAME文件中实现此操作。但是,根据文档所示,您的域名注册商应该可以为您完成此操作。

例如,我使用name.com的域名,我可以添加一个“URL转发”条目:

Domain blog.xxx.me
URL xxx.me
Type Redirect (301) 

这个变化应该在短时间内生效(对我来说可能是一两个小时)。


如果我在CNAME文件中有一个域名"reggi.com",然后我将"www.reggi.com"和"blog.reggi.com"的DNS CNAME更改为"reggi.com",这样可以吗?这就是你们所说的吗?我不确定是否想要重定向。 - ThomasReggi
1
@ThomasReggi:我的设置是:将reggi.com设置为CNAME,然后添加两个A记录,一个指向204.232.175.78reggi.com,另一个是指向204.232.175.78www.reggi.com。之后,我添加了一个URL转发规则:blog.reggi.com重定向到reggi.com。与这里相同的设置。 - Yi Zeng

1

1
不,但您可以使用GitHub Action使第二个存储库始终与主存储库保持同步。该第二个存储库可以设置另一个域名的GitHub Pages。 Fork Sync 看起来是一个不错的选择。

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