我们尝试以Microsoft标准价格配置Azure CDN,以允许我们重写Url以将所有应用程序路由路由到./index.html。如何设置规则引擎来重写url,但保留所有js文件不变? google中的所有示例都显示了如何按溢价定价执行此操作,但是我们希望可以在Microsoft Standard上执行此操作?
答案 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都不包含点,则可以按以下方式设置规则:
Not Any
(即没有扩展名)/
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
这应该为您输出如下内容:
仅此而已。
我希望这会有所帮助