Azure CDN规则引擎为站点请求的文件添加默认文档EXCEPT

Con*_*thy 5 url-rewriting azure azure-cdn

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

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

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

一切似乎都运作良好.

现有规则添加默认文档

SPA使用的地址栏中的URL从不请求实际文件,但默认文档index.html中的代码确实如此.这些文件请求都是404失败的,因为我猜重写规则也是这样做的.

如果URL包含文件名,我想要的是一些不执行URL重写的方法.规则引擎阻止我在使用URL重写功能时添加这样的条件 - 显然,在尝试使用URL重写功能时,您无法在URL上使用任何匹配条件.

尝试使用涉及URL文件名的条件时出错

小智 6

我也在寻找答案.我最终不得不参与Azure支持.

与App Services和IIS不同,当文件不存在时,CDN无法重写URL.但是,只要SPA的路由不包含a .,就可以创建仅对不包含a的URL路径起作用的重写规则..这将具有重写裸路径请求而仅留下文件请求的效果.

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

  • 转到Azure门户中的CDN配置文件,然后单击" 管理"按钮以打开Verizon管理门户.
  • HTTP Large菜单项下选择Rules Engine.
  • 为新的默认文档规则输入您想要的任何名称.
  • 条件应设置为IF Always.
  • 单击" 功能"旁边的+以添加新功能.
  • 选择URL重写.
  • 请注意用于选择CDN端点的下拉列表.如果CDN配置文件中有多个CDN端点,则需要为每个端点添加新功能.
  • 对于Pattern,输入[^?.]*(\?.*)?$.此模式捕获其中的URL路径.,但不关心它是否在查询字符串中.
  • 对于Path,输入origin_path/document.ext.这是棘手的部分.Path与原始根相对.例如,如果您的CDN端点的原始路径是/origin_path并且您想要重定向到index.html,则应输入origin_path/index.html.如果您的CDN由Azure存储帐户支持且原点指向容器,则始终如此.
  • 单击添加以添加您的规则,等待N小时,您就可以开始了.