静态托管 - Azure Blob 存储上的 ReactJS 应用程序与 Azure CDN

Static hosting - ReactJS app on Azure Blob storage with Azure CDN

我想在 Azure Blob 上以静态方式托管我的 ReactJS 应用程序。问题是 Azure Blob 不支持默认文档。为了克服这个问题,我设置了 Azure CDN URL 重写规则

  • 对于第一个源模式,设置为((?:[^\?]*/)?)($|\?.*)
  • 对于第一个目标模式,设置为index.html
  • 对于第二个源模式,设置为 ((?:[^\?]*/)?[^\?/.]+)($|\?.*)
  • 对于第二个目标模式,设置为/index.html

这是来自Hao's tutorial

这成功解决了 myapp.azureedge.net 但是当直接使用客户端路由时,例如myapp.azureedge.net\react\route 该应用程序将 return ResourceNotFound

意思是当用户输入 myapp.azureedge.net\react\route 作为他的 URL 并尝试导航到该页面时,他将收到错误消息。

我怀疑我需要将不是静态特定文件的每个路径重定向到 index.html。但是,我不知道这是否是正确的解决方案或如何实现它

感谢您的帮助!

我之前遇到过类似的问题。假设 Azure Blob 容器下的静态文件结构如下所示:

注:其中cdn为容器名称。

您可以配置以下 URL 重写规则以设置默认页面并将所有请求重写到 index.html 以及 cdn/scripts 和 [下可能的查询字符串以及您的图像和脚本=12=] 可以正确访问。

此外,您可以使用 Azure Web App to host your static website and choose the proper pricing tier. Details you could follow Pricing calculator

Azure CDN 现在支持静态网站托管。更多信息在这里:

https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-static-website

您可以在不使用 URL 重写的情况下托管单页应用程序,方法是将默认文档和错误文档设置为 index.html

有一个新的 Azure 静态 Web 应用服务,目前处于预览模式,但部署现代前端 SPA 非常容易。您可以设置后备路由 (route.json) 将所有内容重定向到 index.html,您可以在此处查看更多信息:https://docs.microsoft.com/en-us/azure/static-web-apps/