iOS14.5下apple-app-site-association的components匹配规则选型问题
问题结论
正确选项
精准匹配目标链接的场景下,选项A是唯一正确的配置。
各选项匹配逻辑分析
先明确iOS 14+版本apple-app-site-association文件的components字段匹配规则:
路径匹配严格区分末尾斜杠,
*为通配符可匹配0个及以上任意字符,/*要求路径前缀后至少存在1级子路径;查询参数值中?匹配1个任意字符,*匹配0个及以上任意字符。
逐个选项验证:
- 选项A:路径规则
/invitation为精确匹配,完全对应目标链接的路径部分,查询参数规则"invitationCode": "??????"匹配恰好6位字符的邀请码,和目标参数完全匹配,无多余匹配范围,是最优解。 - 选项B:路径规则
/invitation*虽然能命中目标链接,但会额外匹配所有以/invitation开头的路径(比如/invitationPage、/invitation/other等),匹配范围溢出,不属于精准匹配的正确配置,仅在允许匹配所有相关前缀路径的场景下可用。 - 选项C:路径规则
/invitation/要求路径末尾带斜杠,目标链接路径无末尾斜杠,无法匹配,配置错误。 - 选项D:路径规则
/invitation/*要求/invitation/后至少存在1级子路径,目标链接无对应子路径,无法匹配,配置错误。
其他可行配置说明
如果不需要严格限制邀请码为6位字符,可将参数匹配规则修改为"invitationCode": "*",适配任意长度的邀请码,配置如下:
"components": [ { "/": "/invitation", "?": { "invitationCode": "*" } } ]
如果需要同时兼容路径带末尾斜杠的场景(比如https://www.myexample.com/invitation/?invitationCode=123456),可以新增一条匹配规则:
"components": [ { "/": "/invitation", "?": { "invitationCode": "??????" } }, { "/": "/invitation/", "?": { "invitationCode": "??????" } } ]
内容的提问来源于stack exchange,提问作者iKK
相关产品推荐
相关产品推荐

