我正在尝试通过Angular
与Azure 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
做到了,就像下面的屏幕截图一样。
但是据我从文档中看到的,在标准规则引擎Contains
字段中无法使用正则表达式填充。我在Google各处进行了挖掘,但似乎找不到适合我的解决方案。
因此,我已将CDN服务切换到Verizon Premium,并尝试将(v(?:(\d+)\.)?(?:(\d+)\.)?(?:(\d+)\.\d+))
应用于路径正则表达式。
Verizon Premium的主要问题是,如果我将IF字段声明为URL Rewrite
,我只能应用Always
功能
如您所见,URL Rewrite
未列出。
我还使用Always
语句进行了几次部署,但效果不佳。
每个人在博客中共享的单个示例
因此上面的示例未涵盖文件扩展名和子路由。
有什么方法可以实现我的目标?
谢谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
我将分享我在规则V4中在Verizon Premium中使用的当前配置: 这些步骤是:
/80XXXXXX/XXXXXX/((?:[^\?]*/)?)($|\?.*)
/80XXXXXX/XXXXXX/index.html$2
/80XXXXXX/XXXXXX/((?:[^\?]*\/)?[^\?\/.]+)($|\?.*)
/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>
我希望这对某人有帮助