Azure CDN 规则引擎添加默认文档(站点请求的文件除外)

2024-04-05

我正在使用 Azure Verizon CDN 从 Blob 存储发布我的 Web 应用程序(SPA)。我已成功设置自定义域和 SSL。 我在 CDN 中添加了重写规则以重定向到默认文档 index.html。基本上,这会获取传入请求并在 URL 路径和任何查询字符串之间插入“index.html”。 所以mydomain.com/startupmydomain.com/startup/index.html

mydomain.com/homepagemydomain.com/homepage/index.html

and mydomain.com/showuser/?userId=xxxxxmydomain.com/showuser/index.html/?userid=xxxxx

这一切似乎都运作良好。

添加默认文档的现有规则 https://i.stack.imgur.com/GIZNx.jpg

SPA 使用的地址栏中的 URL 从不请求实际文件,但默认文档 index.html 中的代码会请求。这些文件请求都因 404 错误而失败,因为我猜重写规则也对这些请求起作用。

我想要的是如果 URL 包含文件名,则可以通过某种方式不执行 URL 重写。规则引擎阻止我在使用 URL 重写功能时添加此类条件 - 显然,在尝试使用 URL 重写功能时,您不能在 URL 上使用任何匹配条件。

尝试使用涉及 URL 文件名的条件时出错 https://i.stack.imgur.com/HU9Cd.jpg


我也在寻找这个问题的答案。我最终不得不寻求 Azure 支持。

与应用服务和 IIS 不同,CDN 无法在文件不存在时重写 URL。但是,只要您的 SPA 路线不包含.,您可以创建一个重写规则,仅作用于不包含.。这将具有重写裸路径请求的效果,同时保留文件请求。

首先,您的 CDN 配置文件需要是 Azure 中的 Verizon Premium CDN SKU。它是唯一支持重写规则的 SKU。

  • 转到 Azure 门户中的 CDN 配置文件,然后单击Manage按钮打开 Verizon 管理门户。
  • Select 规则引擎在下面HTTP 大号菜单项。
  • 输入您想要的新默认文档规则的名称。
  • 条件应设置为如果总是.
  • 点击+在“功能”旁边添加新功能。
  • Select 网址重写.
  • 请注意用于选择 CDN 端点的下拉列表。如果您的 CDN 配置文件中有多个 CDN 端点,则需要为每个端点添加新功能。
  • 对于模式,输入[^?.]*(\?.*)?$。此模式捕获 URL 路径.在其中,但不关心它是否在查询字符串中。
  • 对于路径,输入origin_path/document.ext。这是棘手的部分。路径是相对于origin根。例如,如果您的 CDN 端点的原始路径是/origin_path并且您想重定向到index.html,你会输入origin_path/index.html。如果您的 CDN 由 Azure 存储帐户支持并且源点指向容器,则始终会出现这种情况。
  • 单击“添加”以添加您的规则,等待 N 小时,然后就可以开始了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure CDN 规则引擎添加默认文档(站点请求的文件除外) 的相关文章

随机推荐