我在 Azure 门户中的 Verizon 高级订阅下创建了一个 Azure CDN,其端点指向我的 Azure 静态网站 URL。
我想在 Azure Verizon 引擎中创建一个重定向规则,其中添加 /index.html
如果未指定扩展名或 URL 的最后一个字符不是 /
,则到 URL 末尾象征。
到目前为止我尝试使用(.+\/[^\.]\w+$)
正则表达式,您可以查看其工作原理的示例 here
在本例中,如果您键入 URL https://blah.com/foo/bar在网络浏览器中
它不会更改 URL,但您可以从 https://blah.com/foo/bar/index.html 查看现有文件的一些内容但某些资源链接已损坏。不知道为什么我在这种情况下没有得到 404,但也许是因为我设置了 Index document name
至index.html
在 Static Website
面板中Storage account
Azure 中的面板。如果我打开Network
Chrome
的开发者工具中的选项卡我可以看到很多 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重定向
,在源文本框中输入正则表达式(.+\/[^\.]\w+$)
并在目标文本框中添加https://%{host}/$1/index.htm
。在这里,我使用了可在 Verizon 中使用的 Azure CDN 的 HTTP 变量。您可以阅读有关变量 here 的更多信息。
简而言之,%{host}
返回一个主机名,例如www.contoso.com
请记住,所有规则更改都需要几个小时的传播才能在 CDN 上生效。
关于regex - 为 Verizon 中的 Azure CDN 创建重定向规则,将/index.html 添加到 URL 末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53779235/