我在Azure门户中的Verizon Premium Subscription下创建了一个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的Index document name
面板的index.html
面板中将Static Website
设置为Storage account
。如果我在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
,并且对于所有此类情况都是通用的。
有任何想法吗??
干杯
答案 0 :(得分:2)
我认为您的Regex表达式还可以。您可以添加规则URL redirect
,在 Source 文本框中,输入正则表达式表达式(.+\/[^\.]\w+$)
,在 Destination 文本框中,添加https://%{host}/$1/index.htm
。在这里,我为Azure CDN使用了HTTP变量,该变量可以在Verizon中使用。您可以阅读有关变量here的更多信息。
简而言之,%{host}
返回主机名,例如www.contoso.com
请记住,所有规则更改都需要传播数小时,才能影响CDN。