【问题标题】:best practice for 301 redirecting www to non-www site301 将 www 重定向到非 www 站点的最佳实践
【发布时间】:2020-08-02 00:03:46
【问题描述】:

我已经对此进行了彻底的搜索,但还没有明确的答案。

例如,假设我有一个域 example.com,我希望这是我的规范 URL(即 www.example.com 应该 301 重定向到 example.com

这就是我所做的:

  • DNS 方面
    • example.comA 记录添加到server IP
    • www.example.com 添加了一条CNAME 记录作为example.com 的别名
  • webserver-wise(如果重要的话,我使用了 nginx)
    • 已将上游设置为server IP
    • 将所有http重定向到https
    • 使用 301 请求配置重定向特定的 www.example.com,如下所示:return 301 $scheme://example.com;

然后我用this之类的重定向检查器进行了测试,得到了这个结果:

  • http://example.com --> 301 重定向到https://example.com
  • http://www.example.com --> 301 重定向到https://www.example.com
  • https://example.com --> 200 OK,正在正常提供内容`
  • https://www.example.com --> 301 重定向到https://example.com

这听起来像是我一直想要实现的,在我的 Chrome 浏览器上打开所有这 4 个链接确实有效。所有这些链接都正确重定向到https://example.com,并且所有证书都有效。

但是,如果我尝试检查我的站点,例如 woorank.com 或尝试使用 Python3 的 request 模块提出请求,他们会告诉我 www.example.com 的证书无效。

>>> import requests
>>> r = requests.get("https://www.example.com")
>>> r
requests.exceptions.SSLError: HTTPSConnectionPool(host='www.example.id', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError("hostname 'www.example.com' doesn't match 'example.com'")))

这是因为我确实只有一个证书,在域 example.com 上注册,并且确实将它用于虚拟主机 example.comwww.example.com

所以这是因为我在forum 上看到了一些参考资料:

使用 DNS 的另一个原因是避免两个域都获得 https。

我错过了什么?

编辑:

如果这很重要,我将使用 docker 映像 nginx-proxy 自动创建虚拟主机。证书签名为example.com,我将example.comwww.example.com 配置都创建为虚拟主机。

【问题讨论】:

  • 您需要一个对www.example.com 有效的证书。您可以为两个域获取一个证书,或使用单独的证书。
  • @RichardSmith 谢谢!我们真的需要不同的证书才能进行 301 重定向吗?
  • 重定向通过https 连接传递。浏览器必须首先协商到服务器的连接。服务器可以使用任何证书,但如果服务器使用对域无效的证书,大多数浏览器都会警告用户。
  • 但这并没有 100% 在我的脑海中点击,因为像 redirect-checker.org/index.php 这样的网站能够获得 301 重定向。在那里测试了我的域,它正确显示了 301。这是否意味着该网站没有使用https 进行测试?

标签: nginx https dns


【解决方案1】:

根据 Richard Smith 的评论,是的,结果我只需要为 www.example.comexample.com 使用 SAN 证书。我不知道这是一回事。

使用 SAN 证书,我只能为两种类型的域创建 1 个证书。

【讨论】:

    猜你喜欢
    • 2018-05-01
    • 2017-05-03
    • 2012-04-18
    • 2018-10-19
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    相关资源
    最近更新 更多