为什么链接打开的是网站
Universal Link 就是一条普通的 https 链接,iOS 会把它交给你的应用,而不是交给 Safari。Android 上对应的叫 App Link。用你的应用打开 yourbrand.com 的链接之前,两种手机都会先从 yourbrand.com 下载一个写明了这个应用的文件。读不到文件,就打不开应用,链接直接打开网站。
用建站工具做的网站,缺的通常就是这个文件。应用那边,你的开发者已经配好了。网站这边需要在一个固定地址放一个文件,而那里能放什么,由建站工具说了算。
两种手机都会检查的地址
iOS 会在你的应用列出的每个域名上检查这个 URL。Android 则在同一个文件夹里找 assetlinks.json。
https://yourbrand.com/.well-known/apple-app-site-association
https://
HTTPS,不能重定向
证书有效,直接返回内容,不能有 301 或 302。
yourbrand.com
精确的主机名
每个子域名都要提供自己的文件。www.yourbrand.com 是另一个主机。
/.well-known/
固定的文件夹
路径不能改。各建站工具的区别,就在于你能不能往这里写文件。
apple-app-site-association
没有扩展名
内容是 JSON,但文件名不带 .json。Android 的文件叫 assetlinks.json。
各建站工具允许你托管什么
依据各建站工具自己的帮助页面和开发者文档,截至 2026 年 10 月 23 日。
逐个来看
Webflow。从 2024 年 12 月 16 日起,Webflow 可以托管任意 well-known 文件。在 Assets 面板里新建一个名为 well-known 的文件夹,上传文件,然后发布。上传的文件必须以 .json、.txt 或 .md 结尾,所以把 iOS 文件命名为 apple-app-site-association.noext.txt,Webflow 会自动去掉扩展名。assetlinks.json 原样上传即可。新增文件需要 Premium Site 套餐(或旧版 Business Site 套餐),而且在 webflow.io 测试域名上不生效。
Framer。在 Site Settings 里打开 Hosting,再打开 Files。逐个添加文件,路径填 /.well-known,然后发布。Framer 的文档点名列出了这两个文件,也接受没有扩展名的文件。这项功能在 Pro 和 Enterprise 套餐中提供。Framer 没说明无扩展名的文件会以什么内容类型返回,所以发布后要检查一下。
Shopify。Shopify 没有文档说明如何上传这两个文件。应用注册后,它会在你的自定义域名上自动生成这两个文件,但绝不会在 *.myshopify.com 上生成。注册有两种方式:在自定义应用的 Storefront API 设置里,或者通过 MobilePlatformApplication API,这个 API 的权限范围要由 Shopify 支持团队开通。iOS 文件以 /* 结尾,所以除了 /admin 和两个支付回调地址,商店的每个 URL 都会打开应用。2026 年 5 月有开发者提出希望能控制路径;到 10 月 14 日,Shopify 仍没有可以分享的进展。
Wix。Wix 没有文档说明如何在 /.well-known/ 下提供文件(2026 年 10 月核实)。它的帮助中心在一个仍在征集投票的功能请求里写道,目前无法在域名根目录添加验证文件。
Squarespace。同样没有文档说明的方法。它关于文件的帮助页面说,文件 URL 由 CDN 分配,无法更改。它的论坛上流传的变通办法是用 URL Mappings 做 301 重定向,而 Apple 和 Google 都不接受这种做法。
子域名方案
如果你的建站工具不支持,或者 Shopify 那个把所有 URL 都交给应用的文件超出了你的需要,那就让网站保持原样。把 links.yourbrand.com 这样的子域名指向一个静态托管服务,比如 Netlify、Vercel、Cloudflare Pages 或 Firebase Hosting;这四家都能按路径设置响应头。况且 Apple 的 TN3155 本来就针对一个相关场景建议使用单独的子域名:在浏览器里,从 yourbrand.com 的一个页面链接到另一个页面不会打开应用,而链接到另一个子域名则会。
有两点会变。你分享的链接必须指向这个子域名;指向 yourbrand.com 页面的链接仍然会打开网站。另外应用需要更新:在 Associated Domains 里加上 applinks:links.yourbrand.com,在 Android 上为这个主机加一个带 autoVerify 的 intent filter。子域名上的其他路径也要给个去处,比如重定向到你的网站,这样没装应用的人就不会看到 404。
三个文件
换成你自己的 ID 和指纹。生成器会帮你填好。
.well-known/apple-app-site-association
{
"applinks": {
"details": [
{
"appIDs": ["ABCDE12345.com.yourbrand.app"],
"components": [
{ "/": "/*", "comment": "Every link on this subdomain opens the app" }
]
}
]
}
}.well-known/assetlinks.json
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.yourbrand.app",
"sha256_cert_fingerprints": ["14:6D:E9:83:...:3F:CF:44:E5"]
}
}]_headers (Netlify)
/.well-known/apple-app-site-association
Content-Type: application/json
/.well-known/assetlinks.json
Content-Type: application/json设置 links.yourbrand.com
以 Netlify 为例。其他托管服务的步骤相同,只是记录值不同。
- 01
部署文件夹
域名
links.yourbrand.com
包含两个文件的 .well-known 文件夹,再加上 _headers。然后在 Netlify 里把 links.yourbrand.com 添加到这个站点。
- 02
添加一条 CNAME 记录
- 记录类型
- CNAME
- 主机记录
- links
- 记录值
- your-site.netlify.app
在你管理 DNS 的地方添加,可能就在建站工具的域名设置里。网站原有的记录保持不变。DNS 生效可能需要一天。
- 03
先 HTTPS,再检查
- 等待 DNS
- 证书已签发
- 两个文件都能加载
https://links.yourbrand.com/.well-known/assetlinks.json
Netlify 会为子域名签发并续期 Let’s Encrypt 证书。之后用验证工具检查一遍。
或者干脆不用文件
Universal Link 并不是进入应用的唯一途径。Pro 套餐(每月 $9.99)的 Appy 链接,会在你的商店地址旁边带上应用的 URL scheme 深度链接,比如 yourapp://product/42。在 Safari 和 Chrome 里,它先尝试打开应用,再转到商店。在 Instagram 这类应用内浏览器里,它会显示一个页面,上面有“打开应用”按钮、商店按钮,以及打开 Safari 或 Chrome 的步骤。电脑用户会去你的网站。你的网站上什么都不用放。
不过,这不是你自己域名上的 Universal Link。链接在 appy.to 上,yourbrand.com/product/42 仍然会打开网站。Apple 强烈建议用 Universal Links 而不是 scheme,原因之一是没有任何机制能阻止别的应用注册你的 scheme。在 Business 套餐下,go.yourbrand.com 这样的自定义域名可以承载你的链接,但只做跳转;通过 Appy 在你自己的域名上使用 Universal Links 和 App Links,属于 Enterprise 套餐。有了上面的子域名,Pro 链接就可以把 https://links.yourbrand.com/product/42 用作深度链接,没装应用的手机照样会进入商店。
分享链接前先检查
生成两个文件
/tools/aasa-assetlinks-generator 的生成器会根据你的 Team ID、bundle ID、包名和指纹生成这两个文件。
验证主机
/tools/universal-link-validator 的验证工具会分别从你的服务器和 Apple CDN 获取 AASA 文件,并检查 assetlinks.json 里有没有你的包名和指纹。
给 Apple CDN 一点时间
iPhone 从 Apple 的 CDN 读取这个文件,CDN 会在 24 小时内抓取它。手机大约每周检查一次;重装应用可以拉取最新副本。
点一个真实的链接
把链接存进备忘录,或者用信息发给自己,然后在装了应用的手机上点它。在 Android 上,带上你的包名运行 adb shell pm get-app-links,应该会看到这个主机显示为 verified。
延伸阅读
建站工具上的 Universal Links:常见问题
能把 apple-app-site-association 上传到 Shopify 吗?
不能以文件形式上传。应用注册后,Shopify 会在你的自定义域名上自动生成它,并把商店的每个 URL 都交给应用。在 myshopify.com 上无效。
怎样在 Webflow 里添加 .well-known 文件?
在 Assets 面板里新建一个名为 well-known 的文件夹,上传文件并发布。把 iOS 文件命名为 apple-app-site-association.noext.txt,这样返回时就没有扩展名。新增文件需要 Premium Site 套餐或更高。
Wix 和 Squarespace 支持 Universal Links 吗?
两者都没有文档说明如何在 /.well-known/ 下提供文件(2026 年 10 月核实)。可以把文件放在静态托管服务上的子域名里,或者用通过 URL scheme 打开应用的链接。
能用重定向把 /.well-known/ 指向别处的文件吗?
不能。Apple 要求文件不能经过重定向,Android 的文件也必须在没有 301 或 302 的情况下加载。
没有网站,Universal Links 能用吗?
它们需要的是一个能提供文件的域名,而不是你的主站,所以静态托管上的一个子域名就够了。通过智能链接使用 scheme 深度链接,完全不需要文件就能打开应用,但那不是 Universal Link。
文件已经修好了,为什么链接还是打开网站?
iPhone 从 Apple 的 CDN 读取文件,CDN 会在 24 小时内抓取;已安装的应用大约每周检查一次。要测试新文件,就重装应用。
继续探索
Universal Links 与 App Links 错误码详解
SWCERR00101、SWCERR00301、legacy_failure 和 1026 分别是什么意思、在哪里能看到,以及怎样修复,让 Universal Links 和 App Links 重新打开你的应用。
应用内浏览器如何处理深度链接:Instagram、TikTok、Facebook、Gmail、Telegram 等
同一条链接,在 Safari 里能打开应用,到了 Instagram 里就失灵。本文梳理每个应用用的是哪种浏览器、Apple、Google 和 Chrome 的规则,以及你能做些什么。
用自己的域名做 App 短链接:实用指南
为什么链接最好放在自己的域名上,子域名怎么选,三步完成设置,以及已经发出去的链接和二维码会怎样。
想看更多内容?浏览 博客全部主题.