Azure CDN Microsoft标准重写URL角度

时间:2019-11-18 12:20:32

标签: angular azure cdn azure-cdn

我们尝试以Microsoft标准价格配置Azure CDN,以允许我们重写Url以将所有应用程序路由路由到./index.html。如何设置规则引擎来重写url,但保留所有js文件不变? google中的所有示例都显示了如何按溢价定价执行此操作,但是我们希望可以在Microsoft Standard上执行此操作?

3 个答案:

答案 0 :(得分:14)

我终于从Microsoft支持那里得到了一个可行的答案。 他们说Microsoft CDN规则引擎不支持URL file extension Not Any,而我应该检查文件扩展名的长度。

  • 条件:URL file extension
    • 操作员= Not greater than
    • 扩展名= 0
    • 大小写转换= No transform
  • 操作:URL rewrite
    • 源模式= /
    • 目的地= /index.html
    • 保留不匹配的路径= No

此解决方案对我有用。 在测试之前,请确保清除CDN缓存。

答案 1 :(得分:0)

如果您的页面URL都不包含点,则可以按以下方式设置规则:

  • 条件:“ URL文件扩展名” = Not Any(即没有扩展名)
  • 操作:“ URL重写”,
    • source = /
    • 目的地= index.html
    • 保留未匹配的路径=否

这会将URL尾部没有点的任何URL重写为index.html。

答案 2 :(得分:0)

我在使用 Azure Microsoft CDN 在 Azure blob 存储上设置静态网站时遇到了这个挑战。

这是我如何做到的

如果您想使用 Powershell 脚本实现此目的,请使用以下脚本。该脚本还包含用于设置 Http 到 Https 重定向的规则:

# Define Variables
$RESOURCE_GROUP_NAME = MyResourceGroup
$PROJECT = MyProject
$CDN_PROFILE_NAME = MyCDNProfile

# Create a New Http to Https Redirect Rule
$RULE_CONDITION_1 = New-AzCdnDeliveryRuleCondition -MatchVariable 'RequestScheme' -Operator 'Equal' -MatchValue 'HTTP'
$RULE_ACTION_1 = New-AzCdnDeliveryRuleAction -RedirectType 'Moved' -DestinationProtocol 'Https'
$HTTP_TO_HTTPS_RULE = New-AzCdnDeliveryRule -Name 'HttpToHttpsRedirectRule' -Order 1 -Condition $RULE_CONDITION_1 -Action $RULE_ACTION_1

# Create a New SPA Rewrite Rule
$RULE_CONDITION_2 = New-AzCdnDeliveryRuleCondition -MatchVariable 'UrlFileExtension' -Operator 'LessThan' -MatchValue '1'
$RULE_ACTION_2 = New-AzCdnDeliveryRuleAction -SourcePattern '/' -Destination '/index.html'
$SPA_REWRITE_RULE = New-AzCdnDeliveryRule -Name 'SpaRewriteRule' -Order 2 -Condition $RULE_CONDITION_2 -Action $RULE_ACTION_2

# Set the CDN Delivery Policy with the CDN Delivery Rule(s)
$CDN_DELIVERY_POLICY = New-AzCdnDeliveryPolicy -Description "Https redirect policy" -Rule $HTTP_TO_HTTPS_RULE,$SPA_REWRITE_RULE

# Get CDN Endpoint
$CDN_ENDPOINT = Get-AzCdnEndpoint -ProfileName $CDN_PROFILE_NAME -ResourceGroupName $RESOURCE_GROUP_NAME -EndpointName $PROJECT

# Assign the CDN Delivery Policy to the CDN Endpoint
$CDN_ENDPOINT.DeliveryPolicy = $CDN_DELIVERY_POLICY

# Save CDN Endpoint Changes with Updated Delivery Policy
Set-AzCdnEndpoint -CdnEndpoint $CDN_ENDPOINT

这应该为您输出如下内容:

enter image description here

仅此而已。

我希望这会有所帮助