非 www 到 www 没有证书错误

大家好,

我现在遇到以下问题,如果有人能帮助我找到正确的方法,我将非常高兴。

  1. 我在 Vultr 的 Ubuntu 21.10 服务器上安装了 discourse
  2. 使用了默认设置,并在安装过程中创建了 Let’s Encrypt 证书(用于 www.example.com

我的目标是让我的论坛只能通过 www.example.com 访问,而不是 example.com

目前情况:

  • http://example.com 正确重定向(301)到 https://www.example.com
  • http://www.example.com 正确重定向(301)到 https://www.example.com
  • https://example.com 抛出证书错误,并且没有重定向到正确的 https://www.example.com(证书是为 www.example.com 而不是为 example.com 颁发的)

如何才能让 https://example.com 重定向到 https://www.example.com,以及如何实现我的目标?

此致,
Elmi

1 个赞

我遵循了这些建议,并在我的 app.yml 中添加了一行:

虽然我并不介意人们是通过根域名还是 www 子域名找到我,所以我没有尝试过重定向。

2 个赞

请注意搜索引擎中的重复内容。

3 个赞

这是我不太擅长的领域。:slightly_smiling_face: 推荐的方法是什么?我目前有一个 A 记录,用于指向我的 DigitalOcean 实例的域和 www 子域。

2 个赞

最简单的方法是使用 www.forcewww.com。(免责声明:这是我自己的服务)

4 个赞

非常感谢您的反馈@JammyDodger。我会试试,尽管它似乎处理的是一个略有不同的问题。但也许它会奏效。

最好只保留一个网站版本。Duplicate Content: Why does it happen and how to fix issues - Moz

2 个赞

这种重定向在任何 Web 服务器上都非常简单,只需在 Google 上搜索一下就能找到如何实现的方法。为什么在这里会不同?

2 个赞

我相当确定,如果你同时请求这两个证书,它会按你期望的那样重定向。forcewww.com 解决方案更简单。

因为它在 Docker 容器内部,你在其他地方找到的所有主机内解决方案可能都无济于事。

2 个赞

只是快速更新一下,让你们知道什么对我有效。

我尝试过,但这对我无效。看起来没有颁发额外的证书。

我也尝试按照这个建议解决我的问题,但这对我也没有用。

到目前为止,唯一解决我问题的办法是按照这里的说明操作 http://www.forcewww.com/

尽管如此,我认为这仍然不是一个理想的解决方案,因为它依赖于外部服务。当然,它是免费的,但一旦该服务停止运行,您就需要找到一个新的解决方案。
我希望你不要误会我 @michaeld,你提供的解决方案确实很好而且很简单,我非常感激。

如果在标准安装过程中,你们能够决定只使用 www 或非 www 版本,那将是一件很棒的事情,可以让我们生活得更轻松 :slight_smile:

2 个赞

虽然我上个月没有测试过,但我很有信心它能正常工作。如果你没有正确设置 DNS 并运行了很多次,那么你就会受到速率限制。

你的意思是“并请求一个包含两个主机名的证书?” 这太难了。对于那些不知道如何以这种方式配置 DNS 的人来说,它会破坏很多东西的可能性非常非常高。

2 个赞

如果您为根域和 www 版本都创建证书,那么两者都将得到覆盖。:smiley 正如您所说,证书不包含您的根域……因此会出现错误。

您的重定向应该是:

  • http://example.comhttps://example.com
  • http://www.example.comhttps://www.example.com
  • 然后将 https://example.com 重定向到 https://www.example.com(您声明的首选域名)。

这样,无论用户输入的是根域还是 www 版本,他们都将毫无错误地访问您的 https://www.example.com。最佳实践是同时在证书中包含根域和 www。只需确保您的服务器正在提供修改/新证书,而不是旧证书。

我明白了。现在你提到了,我开始想起来了——这也是我将 Discourse 放在“普通”Nginx 背后的第二个原因。第一个原因是需要做一些过滤。嗯,我的解决方案并不花哨或技术要求高,但在这个圈子里并不那么受欢迎。

我必须说,如果像这样简单的事情必须通过第三方网络服务来完成,docker 并不是一个非常用户友好的解决方案。否则,我认为 docker 会非常有用,除非它变得如此流行。

2 个赞

感谢 @pfaffman 的建议。我将在周末再试一次。

关于第二个话题。我明白你的意思,但这可能是一种高级设置或可选设置,因为同一个内容只能通过一个域访问这一点非常关键。

2 个赞

实际上并非如此(除非 Discourse 本身无法运行)。但如果您指的是 SEO 和 Google,那么子域名问题很长一段时间以来都不那么严重了。Google 可以接受,因为只有一个域名——一个是存根 FQDN,一个是带 www 的真实域名。

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.