Lỗi: file /.well-known/assetlinks.json (Android App Links) bị trả Content-Type: text/plain, trong khi Google bắt buộc application/json.
Nguyên nhân thường gặp: - Server là nginx: nginx không đọc .htaccess, nên sửa .htaccess không có tác dụng. Phải sửa trong cấu hình nginx.
- Panel quản lý hosting (aaPanel/BT Panel...): panel thường tự thêm một đoạn cấu hình để xác thực SSL.
Đoạn này bắt mọi request /.well-known/* và ép trả text/plain. Nó chạy trước khi nginx xét các location, nên thêm location riêng cho file cũng không ăn.
Cách fix: trong file cấu hình nginx của site, đặt đoạn sau trước dòng include cấu hình well-known của panel:
Code:
if ($uri = /.well-known/assetlinks.json) { break;
}
break làm nginx bỏ qua đoạn của panel cho riêng file này. File được trả như file tĩnh, lấy kiểu theo mime.types nên ra application/json. Các file khác trong /.well-known/, gồm cả file xác thực SSL, vẫn chạy như cũ.
Với apple-app-site-association (iOS) thì file không có đuôi .json, nên cần thêm location riêng để khai báo kiểu:
Code:
if ($uri = /.well-known/apple-app-site-association) { break;
}
location = /.well-known/apple-app-site-association { default_type application/json;
}
Các bước:
1. Backup file cấu hình.
2. Thêm đoạn trên.
3. Chạy nginx -t, báo OK thì nginx -s reload.
4. Kiểm tra: curl -sI https://<domain>/.well-known/assetlinks.json | grep -i content-type, kết quả phải là application/json.
5. Nếu dùng Cloudflare/CDN thì purge cache file đó.
6. Công cụ kiểm tra của Google lưu kết quả khoảng 10 phút, đợi hết thời gian đó rồi test lại.
Lưu ý: panel có thể ghi đè file cấu hình khi đổi setting site, nên sau mỗi lần đổi hãy kiểm tra lại đoạn này còn không.