GitHub Pages https/www 重定向

43
如何在使用 GitHub Pages 托管静态网站时,将 https://www.test.com 重定向到 https://test.com
我最近通过在我的 DNS 提供商(namecheap)设置 A 记录来为我的静态网站启用了 TLS (由 GitHub/Lets Encrypt 提供)。我还选择了 GitHub 存储库设置中的 "强制执行 HTTPS" 选项,它会处理从 http://test.comhttps://test.com 的请求重定向。我已经通过我的 DNS 提供商配置了一个重定向,将 http://www.test.com 转发到 https://test.com,但是缺少的一块拼图是将 https://www.test.com 转发到 https://test.com
关于这个问题,GitHub 表示:"如果您的域名启用了 HTTPS 强制执行,则 GitHub Pages 服务器不会自动路由重定向。您必须通过您的域名注册商配置 www 子域和根域重定向。"

...我的DNS提供商说,"在帐户中无法设置URL重定向,以便从http://www.domain.tld(使用端口80)进行TCP端口转发到https://www.domain.tld(通过端口443工作)"。

我似乎陷入了两个服务相互指责应该提供这种功能的无限循环中。


使用@ajzbc的答案,但使用certbot重新获取您的证书,确保test.com和www.test.com都作为域名。-d test.com -d www.test.com而不是-d test.com - Eric Reed
感谢您的建议,@HewwoCraziness。如果我这样做,我需要每90天更新证书吗?目前,GitHub为我处理了这个问题。 - pdoherty926
1
看起来你可以在 GitHub 的设置中启用 HTTPS 并添加自定义域名:https://ayesh.me/GitHub-HTTPS (如果这不能解决问题,你可以手动更新并每 90 天添加证书,或寻找自动化方式。) - Eric Reed
3个回答

36

对我而言有效的做法:

  • 将您的自定义域名更改为以www.作为前缀,像这样: form

  • 保存设置并等待直到www.example.com解析并正常工作。

  • 再次删除www.前缀并保存。

  • 等待浏览器和DNS缓存失效。

  • 所有组合应该通向https://example.com/,且不应出现SSL错误。


8
稍等片刻。这是否是欺骗Github Certbot生成既包括www又包括裸域名的证书?但到期后,很可能只会续订当前裸域名证书。 - Sudarshan Kadam
5
@SudarshanKadam,我的证书已经更新,而且www前缀仍然可用。 - Paul
2
感谢 @Paul 的确认。 - Sudarshan Kadam
3
真是让我吃惊,这个方法居然管用了。为了不误导别人,在证书更新并且这个方法仍然有效之后,我会采纳你的答案。你是怎么想出来的?你有联系GitHub或LetsEncrypt的任何人来弄清楚这究竟是怎么回事吗? - pdoherty926
3
我可以确认,我的证书在过去的一周内已经得到了更新。 - pdoherty926
显示剩余11条评论

6
GitHub Pages会自动处理顶级域名和www子域名之间的重定向,只要您正确配置DNS记录即可。
从GitHub Pages关于配置顶级域名的文档中可以看到:

如果您通过DNS提供商为每种类型的域名配置了正确的记录,则GitHub Pages将自动在这些域名之间创建重定向。例如,如果您将www.example.com配置为站点的自定义域,并且您已经设置了适用于顶级域名和www域名的GitHub Pages DNS记录,则example.com将重定向到www.example.com。请注意,自动重定向仅适用于www子域名。

虽然文档讨论了从顶级域名重定向到www子域名,但反向重定向也同样有效。
如果想要将顶级域名作为目标(就像这个问题中一样),请将自定义域值设置为example.com即可。
如果希望使用“www”子域名作为目标,请将自定义域值设置为“www.example.com”。只要针对顶级域和“www”子域的DNS记录配置正确(如文档所述),这将起作用。
虽然这不是问题的重点,但问题何时应该使用“www”子域名?提供了一些关于是否使用“www”的有益见解。

1

这里的任何答案都对我无效,所以为了解决问题,我在我的域名提供商(Google Domains)上设置了一个转发域名。

我通过以下配置使我的www子域名指向我的主域名:

  • 永久重定向(301)
  • 转发路径
  • 启用 SSL

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