存储静态网站子目录的Azure CDN高级Verizon规则引擎V4 URL重写

时间:2020-06-29 22:11:30

标签: azure-storage-blobs azure-blob-storage azure-cdn verizon

我正在尝试通过AngularAzure Storage Static Website一起托管 Azure CDN Verizon Premium项目

假设我为每个Angular构建的容器都命名为v0.3.13.3,并且在该容器中还存在多语言构建的角度项目。

我要实现的目标是为正确的index.html服务,并为每种版本和语言提供正确的路由。

您可能会在下面找到示例路线:

my.domain.com/v0.3.13.3应该投放/v0.3.13.3/index.html
my.domain.com/v0.3.13.3/dashboard应该为/v0.3.13.3/index.html服务
my.domain.com/v0.3.13.3/fr应该为/v0.3.13.3/fr/index.html服务
my.domain.com/v0.3.13.3/fr/dashboard应该投放/v0.3.13.3/fr/index.html

我已经设法使用Azure Standard Rules Engine 做到了,就像下面的屏幕截图一样。

enter image description here

但是据我从文档中看到的,在标准规则引擎Contains字段中无法使用正则表达式填充。我在Google各处进行了挖掘,但似乎找不到适合我的解决方案。

因此,我已将CDN服务切换到Verizon Premium,并尝试将(v(?:(\d+)\.)?(?:(\d+)\.)?(?:(\d+)\.\d+))应用于路径正则表达式。

Verizon Premium的主要问题是,如果我将IF字段声明为URL Rewrite,我只能应用Always功能

enter image description here

如您所见,URL Rewrite未列出。

我还使用Always 语句进行了几次部署,但效果不佳。

每个人在博客中共享的单个示例

enter image description here

因此上面的示例未涵盖文件扩展名和子路由。

有什么方法可以实现我的目标?

谢谢。

2 个答案:

答案 0 :(得分:0)

有关在Azure CDN中选择URL重写的方式,请参阅规则引擎4.0中的以下内容-该文档目前缺少,并且仍在尝试使之起作用。设置正确后,我将更新此信息 Azure CDN Rule Engine 4.0

答案 1 :(得分:0)

我将分享我在规则V4中在Verizon Premium中使用的当前配置: 这些步骤是:

  1. 新规则:将军始终
  2. 功能:URL-> URL重写
  3. 来源:/80XXXXXX/XXXXXX/((?:[^\?]*/)?)($|\?.*)
  4. 目的地:/80XXXXXX/XXXXXX/index.html$2
  5. 并添加第二条规则。来源:/80XXXXXX/XXXXXX/((?:[^\?]*\/)?[^\?\/.]+)($|\?.*)
  6. 目的地:/80XXXXXX/XXXXXX/index.html$2

您还可以按照https://stackoverflow.com/a/58700538/3591687

中的说明获取原点。

这是生成的XML规则

<policy>    
  <rules>   
    <rule>
        <match.always>
            <feature.url.url-rewrite source="/80XXXXXX/XXXXXX/((?:[^\?]*/)?)($|\?.*)" destination="/80XXXXXX/XXXXXX/index.html$2"/>
            <feature.url.url-rewrite source="/80XXXXXX/XXXXXX/((?:[^\?]*\/)?[^\?\/.]+)($|\?.*)" destination="/80XXXXXX/XXXXXX/index.html$2"/>
        </match.always>
    </rule>
  </rules>
</policy>

我希望这对某人有帮助