首先声明一下,我的Linux服务器使用Nginx进行配置。
iOS深层链接需要配置Apple App Site Association(AASA)文件,这个文件的内容是JSON格式,需要放在HTTPS的.well-known目录下,例如:
https://fangjunyu.com/.well-known/apple-app-site-association
1、配置apple-app-site-association文件
在服务器上,切换到 /var/www/html 文件夹下,创建 .well-known 文件夹和 apple-app-site-association 文件:
cd /var/www/html
mkdir .well-known/
touch apple-app-site-association
然后使用 vi 编辑命令编辑如下内容:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TEAMID.com.yourcompany.Banklet", // TEAMID.Bundle ID
"paths": [ "/Settings" ]
}
]
}
}
其中,appID由TEAMID和应用Bundle ID组成,TEAMID可以在App Store Connect中找到。

paths 是允许的路径,例如 /animation-loop。
配置完成后,如果从网页端访问,如果显示WordPress的页面,没有显示/下载配置的AASA文件,则表示没有配置完成,返回404。

2、配置Nginx配置文件
因为我的服务器涉及Nginx,因此需要修改Nginx的配置文件,从而实现从网页端访问AASA文件。
Nginx 的配置文件通常位于以下位置之一:
/etc/nginx/nginx.conf
/etc/nginx/sites-available/default(对于 Ubuntu 或 Debian 系统)
/etc/nginx/conf.d/default.conf(对于 CentOS 或其他 Linux 系统)
在服务器上,使用vi命令编辑 nginx.conf文件:
vi /etc/nginx/nginx.conf
编辑内容为,在server中添加 location ^~ /.well-known/ 内容
http {
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name _;
// 配置所有以.well-known开头的路径都指向/var/www/html目录
location ^~ /.well-known/ {
root /var/www/html;
allow all;
access_log /var/log/nginx/well_known_access.log;
}
// 配置结束
location / {
...
}
}
}
这里配置的是443端口(https),如果有80端口(http)也可以考虑一同配置上,配置完成后,检查Nginx配置是否有语法错误。
sudo nginx -t
如果配置文件没有错误,系统会显示类似如下的提示:
nginx: configuration file /etc/nginx/nginx.conf test is successful
重载Nginx配置:
sudo nginx -s reload
3、重启Nginx服务
配置文件没有错误后,需要重启 Nginx 使配置生效:
sudo systemctl restart nginx
sudo systemctl reload nginx
4、测试文件是否能访问
在浏览器中访问你的 apple-app-site-association 文件:
https://yourdomain.com/.well-known/apple-app-site-association
如果配置正确,你应该能够看到/下载这个文件的内容。

如果还是出现 404 错误,检查 Nginx 配置是否正确应用,并确保文件的权限设置正确。
sudo chmod -R 755 /var/www/html/.well-known
sudo chown -R www-data:www-data /var/www/html/.well-known
这样 Nginx 用户(通常是 www-data)就可以读取这些文件。
确保 .well-known 文件夹及其内部的文件具有正确的文件权限,允许 Nginx 访问。
总结
在Linux服务器配置完成AASA文件时,里面的paths字段尽量一次性设置完成。因为我在测试时发现,如果修改paths字段后,短时间内无法通过任何手段来更新跳转到iOS应用的链接,目前只能等待24小时后,清理浏览器缓存和重启,来检查链接的更新。
服务器配置完成后,其他操作则需要查看《SwiftUi配置深层链接》在iOS端进行配置。
如果以上配置完成后,文件仍然无法访问,可以尝试清除浏览器缓存,或者用curl 命令再次检查是否有变化。使用 curl 检查响应头:
curl -I https://fangjunyu.com/.well-known/apple-app-site-association
如果仍然跳转到WordPress并起没有查看/下载AASA文件的提示,可以查看Nginx的访问日志或错误日志,确认请求是否到达了 .well-known 目录的处理部分:
tail -f /var/log/nginx/well_known_access.log
通过日志可以看到 Nginx 是否正确处理了该请求,以及是否存在其他配置问题。

扩展知识
找不到Nginx服务位置
如果找不到nginx配置或找不到nginx安装位置,可以检查当前运行的nginx服务位置:
systemctl status nginx

截图中的nginx位置在/opt/nginx,因此在修改nginx配置文件后,可以到/opt/nginx文件夹中运行 nginx -t,检查是否能够执行:
/opt/nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
在输出中,也可以反向找到nginx.conf文件的位置。
也可以通过ps命令查看Nginx进程:
ps -aux | grep nginx

其中 /opt/nginx 就是 Nginx 的可执行文件路径。
Apple App Site Association(AASA)文件的位置
Apple App Site Association (AASA) 文件必须放在 .well-known 目录下,而且这个路径是固定的,不能随便放在其他位置。
路径:AASA 文件必须存放在 Web 服务器的根目录下的 .well-known 文件夹内,路径为:
https://yourdomain.com/.well-known/apple-app-site-association
这个路径是固定的,不能随意修改。
2、文件内容:AASA 文件本身是一个无扩展名的 JSON 文件,它的内容定义了哪些 URL 路径可以被你的应用处理。例如,你可以定义哪些路径对应的网页打开时,App 会被启动并处理。
3、服务器配置:确保你的服务器返回这个文件时的 Content-Type 为 application/json,否则 iOS 设备无法正确解析这个文件。
为什么不能随便找位置放 AASA 文件?
iOS 依赖 .well-known 目录:这是 Apple 的标准规定,iOS 系统会在访问特定网站时自动查找这个文件。如果文件不在 .well-known 目录下,iOS 就不会识别并启用 Universal Links 功能。
安全和标准化:通过 .well-known 目录,Apple 可以确保所有开发者都遵循相同的结构,避免文件放置不当造成的兼容性问题。
如何验证 AASA 文件是否有效?
1、确保路径正确:例如 https://yourdomain.com/.well-known/apple-app-site-association。
2、检查文件内容是否正确:文件中需要包含正确的 appID 和 paths 字段。
3、检查 HTTP 响应头:文件的 Content-Type 必须为 application/json,否则 iOS 设备无法识别。
4、验证服务器支持 HTTPS:Universal Links 只能通过 HTTPS 链接工作,确保你的服务器支持 HTTPS。
apple-app-site-association 文件的作用
apple-app-site-association (AASA) 文件是一个 JSON 格式的文件,它用于告诉 iOS 系统你的网站和应用之间的关系。这个文件是启用 Universal Links 的关键,允许 iOS 系统在用户点击特定链接时,将链接从网页自动引导到你的 App,而不是仅仅打开网页。
AASA 文件的作用:
允许通过 Universal Links 启动应用。例如,如果你在网页上点击一个链接,iOS 会检查 AASA 文件,看看该链接是否与某个已安装的 App 相关联。如果相关联,iOS 会直接启动 App 来处理该链接,而不是通过浏览器打开网页。
AASA 文件通常会指定哪些 URL 路径与你的 App 相关联,并且包括 App 的标识符。
AASA 文件结构示例:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TEAM_ID.com.yourcompany.appname",
"paths": [ "/path/to/link", "/another-path/*" ]
}
]
}
}
appID:指定你应用的团队 ID + Bundle ID(例如:TEAM_ID.com.yourcompany.appname)。
paths:定义可以通过 Universal Links 访问的 URL 路径,支持通配符。
相关文章
SwiftUi配置深层链接:https://fangjunyu.com/2025/02/08/swiftui%e9%85%8d%e7%bd%ae%e6%b7%b1%e5%b1%82%e9%93%be%e6%8e%a5/