azure - 在 Azure Blob 存储上使用静态网站选项托管 SPA(干净的 URL 和深层链接)

标签 azure single-page-application azure-blob-storage static-site azure-cdn

我已按照 Microsoft 文档中的建议,使用 $web 容器在 Azure Blob 存储上成功设置了一个静态网站。此外,我还为“索引文档名称”和“错误文档名称”两者定义了 index.html这是因为我希望我的 JavaScript 应用程序能够处理 404 响应。

但是,当查看 Chrome 中的网络选项卡时,我可以看到我请求的 URL 抛出 404,尽管该页面实际上正在运行。

我的理论如下:

  • Azure 检查"file"是否存在
  • 如果文件存在,则返回该文件
  • 如果文件不存在,它会抛出 404 并将 URL 重写为“错误文档名称”,即我的情况下的 index.html (因此我的页面仍然有效)

我遇到的问题是我的网址是干净的网址,例如:

/activities/some-slug 永远不会作为文件存在,这只是告诉我的 JavaScript 应用程序将请求路由到哪里,即加载哪个 View 。

需要明确的是,该页面确实可以正常工作,因为它仍然将 404 错误路由到 index.html

如何告诉 Azure blob 将所有内容都路由到 index.html 并让我的应用在必要时抛出 404

我们确实已经设置了高级 Verizon CDN,因为我最初并不知道 Azure Blob 上有静态网站选项。如果 CDN 是最佳路线,请提供有关如何配置 CDN 来提供我正在寻找的内容的说明?

我尝试/研究过的内容

我读过很多文章(特别是 this one 中的评论),我相信可能有各种解决方案,即 Azure Functions、代理、CDN 等。也就是说,没有一个提供明确的说明来说明如何实际处理这些特定的问题服务。

我通常在 AWS 上工作,因此不熟悉所有 Azure 服务和可用配置。

最佳答案

我想我找到了解决方案

  1. 添加新规则
  2. 条件:URL 文件扩展名

    a.运算符:小于

    b.扩展名:1

    c.大小写转换:无转换

    [这基本上意味着请求的 URL 没有文件(扩展名),而是应用程序的路由,将由应用程序路由处理]

  3. 操作:URL 重写

    a.源码模式:/

    b.目的地:/index.html

    c.保留不匹配的路径:否

  4. 保存规则

Screenshot .

关于azure - 在 Azure Blob 存储上使用静态网站选项托管 SPA(干净的 URL 和深层链接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59072306/

相关文章:

c# - 通过 .NET 确定每个查询的 DocumentDB 请求费用

ruby-on-rails-4 - Google Recaptcha v2 无法与生产中的 Rails 应用程序配合使用

azure - 是否可以通过编程方式或通过 CLI 将 APNS 证书上传到 azure 通知中心

javascript - Knockout组件可以通过动态生成的<script>来注册吗?

Azure 逻辑应用 - 获取 Blob 内容 - 设置内容类型

c# - 使用 ASP MVC 下载并显示私有(private) Azure Blob

azure-blob-storage - 为什么会在 Azure Blob 存储容器内创建一个名为文件夹的空文件?

Azure 函数(服务总线触发器)System.OperationCanceledException

javascript - 基于Json的架构怎么称呼?

angular - 谷歌 AdWords 与 Angular 5