Azure静态网站不返回404.html页面

Azure静态网站不返回404.html页面

我按照以下方法创建了一个 Azure 静态网站微软的教程一切正常,只是 Azure 不返回404.htmlHTTP 404 请求的页面。


我的静态网站设置:

Azure 静态网站设置


当我导航到不存在的页面时,Azure 返回以下标头:

HTTP/1.1 404 The requested content does not exist.
Content-Length: 1214
Content-Type: text/html
Server: Windows-Azure-Web/1.0 Microsoft-HTTPAPI/2.0
x-ms-error-code: WebContentNotFound
x-ms-request-id: 2680e62d-a01e-002a-7d48-de2087000000
x-ms-version: 2018-03-28
Date: Sat, 08 Feb 2020 06:25:27 GMT

这些标头是正确的。但浏览器中显示的内容如下:

Azure 返回的有趣字符


404.html通过直接导航到该页面,我已经验证了我的页面运行正常:

404 页面在浏览器中有效

如果我使用“存储资源管理器”,我还可以看到我的404.html文件位于$web

404.html 位于 Azure Blob 存储中

但是 Azure 不会返回 HTTP 404 错误的页面。

我尝试过的事情:

  • 不同的浏览器(Firefox 和 Chrome)。得到相同的结果。
  • 清空浏览器缓存。
  • 重新上传404.html页面。
  • 在线搜索有同样问题的人(没有找到)。
  • 根据网上的几个教程验证了我的静态网站设置。看来我的设置是正确的。

更新:根据 Biren 的建议,我将$web容器设置为“容器”访问级别。重新上传文件后,问题仍然存在。但现在浏览器中的文本看起来不同了:

浏览器中的文本已更改

这些是针对不在 blob 中的文件返回的 HTTP 标头(与之前相比没有变化,据我所知仍然是正确的 404):

HTTP/1.1 404 The requested content does not exist.
Content-Length: 966
Content-Type: text/html
Server: Windows-Azure-Web/1.0 Microsoft-HTTPAPI/2.0
x-ms-error-code: WebContentNotFound
x-ms-request-id: 6bfc762c-b01e-0026-1113-dfb78f000000
x-ms-version: 2018-03-28
Date: Sun, 09 Feb 2020 06:38:03 GMT

答案1

我今天自己解决了这个问题。我用来上传网站的软件默认会使用 Gzip 压缩每个 HTML 文件。这是相当标准和良好的行为。不幸的是,Azure Blob Storage 404 页面不要支持Gzip编码。

虽然有针对 404 页面 Gzip 编码的反馈请求,但尚未记录此限制这里

因此解决方案很简单:上传静态网站时,对除 之外的所有 HTML 页面进行 Gzip 压缩404.html。我这样做之后,404 页面上的奇怪文本就消失了,现在一切都正常了。

相关内容