我正在使用 Azure Verizon CDN 从 Blob 存储发布我的 Web 应用程序(SPA)。我已成功设置自定义域和 SSL。
我在 CDN 中添加了重写规则以重定向到默认文档 index.html。基本上,这会获取传入请求并在 URL 路径和任何查询字符串之间插入“index.html”。
所以mydomain.com/startup
去mydomain.com/startup/index.html
mydomain.com/homepage
去mydomain.com/homepage/index.html
and
mydomain.com/showuser/?userId=xxxxx
去mydomain.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(使用前将#替换为@)