11

Netlify 社区经常提出的另一个问题。“Netlify 能否在不强制 SSL (TLS) 的情况下将流量从 http 重定向到 https?”

获得证书后,您可以选中一个框以强制执行 TLS。这将设置从 http 到 https 的重定向,并将 Strict Transport Security 标头添加到所有请求。

用户不想强制 SSL,直到一切都正确设置并且他们知道他们不会更改他们的设置。

4

2 回答 2

15

2018 年 11 月更新

接受的答案不再正确

目前,截至 2018 年 11 月(自 2018 年 7 月起),Netlify 上的所有新站点都是 HTTPS ,默认情况下强制重定向已打开,您无法将其关闭

见博文:

这个问题在 GitHub 上:

即使对于旧站点,关闭 HTTPS 或关闭重定向到 HTTPS 的选项也不再可用:

在此处输入图像描述

于 2018-11-26T09:57:41.287 回答
10

Netlify 确实允许您强制 TLS。建议不要“强制 TLS”,直到您确定所有 URL 都可以使用 https

在您确定所有 URL 都与前面的“https://”一起工作之前,不要选中“强制 TLS”选项!

为什么?

一旦您使用 Netlify 强制 TLS,他们将在您的页面响应标头中设置 STS(Strict-Transport-Security)标头。我不会详细解释,但你可以在这里阅读

主要要知道的是:

一旦受支持的浏览器收到此标头,该浏览器将阻止通过 HTTP 向指定域发送任何通信,而是通过 HTTPS 发送所有通信

请注意,Netlify 的设置(使用强制 TLS 复选框)是让访问浏览器在访问日期之后的1 年内强制执行此操作!因此,如果您在 https 上遇到任何问题,您的网站将会出现一些问题,直到您能够修复它们。

等待!

添加证书后,您仍然希望您的站点始终提供 https 页面,但在测试或解决问题时不要强制它。

解决方案:

使用_redirects部署站点根目录下的文件(在“发布目录,index.html 旁边)将流量重定向到 https。

这是文件的示例

_redirects

# redirect netlify sitename to your sitename for SEO purposes,
# to avoid duplicate content.  Do this for http and https
https://example.netlify.com/* https://www.example.com/:splat 301!
http://example.netlify.com/* http://www.example.com/:splat 301!

# also redirect http to https for your custom domain.
# Note that netlify automatically redirects to your custom domain from the bare domain (or vice versa), so you only need one rule here.
http://www.example.com/* https://www.example.com/:splat 301!

或使用结构化重定向的相同重定向

netlify.toml

[[redirects]]
  from = "https://example.netlify.com/*"
  to = "https://www.example.com/:splat"
  status = 301
  force = true

[[redirects]]
  from = "http://example.netlify.com/*"
  to = "http://www.example.com/:splat"
  status = 301
  force = true

[[redirects]]
  from = "http://www.example.com/*"
  to = "https://www.example.com/:splat"
  status = 301
  force = true

笔记:

  • Netlify 已经将裸域重定向到www子域(可选)
  • 建议www用作您的自定义域,以充分利用具有任何DNS 设置的 Netlify CDN。
  • 将 netlify 子域站点重定向到自定义域(可选)
  • 重定向httphttps所有路径
于 2018-04-07T22:47:01.790 回答