在 Verizon 中为 Azure CDN 创建重定向规则,将 /index.html 添加到 URL 的末尾

Create a redirect rule for Azure CDN in Verizon which adds /index.html to the end of URL

我在 Azure 门户中的 Verizon 高级订阅下创建了一个 Azure CDN,其端点指向我的 Azure 静态网站 URL。 我想在 Azure Verizon 引擎中创建一个重定向规则,如果未指定扩展名或 URL 的最后一唱不是 /,则将 /index.html 添加到 URL 的末尾象征。 到目前为止,我尝试使用 (.+\/[^\.]\w+$) 正则表达式,您可以查看它如何工作的示例 here

我的第一个方法:

在这种情况下,如果您在网络浏览器中键入 URL https://blah.com/foo/bar 它不会更改 URL,但是您可以从 https://blah.com/foo/bar/index.html 查看现有文件的某些内容,但某些资源链接已损坏。不知道为什么我在这种情况下没有得到 404,但可能是因为我在 Azure 的 Storage account 面板的 Static Website 面板中将 Index document name 设置为 index.html .如果我在 Chrome 的开发者工具中打开 Network 选项卡,我可以看到很多 404 响应,例如 这是因为该网站试图从 https://blah.com/foo/ 目录而不是 https://blah.com/foo/bar/ 获取资源 因此,例如,loadcsh.js 实际上位于 https://blah.com/foo/bar/loadcsh.js 下,但网站正在错误目录下搜索文件 https://blah.com/foo/loadcsh.js

我的第二种方法 在这种情况下,如果您键入 URL https://blah.com/foo/bar 它重定向到 https://blah.com/foo/bar/foo/bar/index.html 所以 foo/bar/ 在这里是多余的。

我的第三种方法 在这种情况下,如果您键入 URL https://blah.com/foo/bar 它重定向到 https://blah.com/index.html

我不知道如何应用从 https://blah.com/foo/bar 进行重定向的规则 到 https://blah.com/foo/bar/index.html 并且对于所有此类情况都是通用的。 有任何想法吗?? 干杯

我认为你的正则表达式没问题。您可以添加规则 URL redirect,在 Source 文本框中键入正则表达式 (.+\/[^\.]\w+$) 并在 Destination 文本框中添加 https://%{host}//index.htm。在这里,我使用了可在 Verizon 中使用的 Azure CDN 的 HTTP 变量。您可以阅读有关变量 here 的更多信息。 简而言之 %{host} returns 一个主机名,例如www.contoso.com

请记住,所有规则更改都需要传播几个小时才能对 CDN 生效。