开发者
跳转到应用商店应该用 301 还是 302?
取决于设备的跳转必须保持为临时跳转。本文解释为什么用 301 跳到 App Store 或 Google Play 会在之后带来麻烦。
简短回答
用 302(或 307):把 iPhone 送到 App Store、把 Android 手机送到 Google Play 的跳转,会按设备给出不同的回答,而且以后可能会变。浏览器会记住 301,下次直接跳过你的服务器,所以你事后修正的商店网址,仍会把回访者送到旧地址。OneStoreLink(onestore.link)以 302 响应,所以修改后的目标从下一次点击起就会生效。
最后审阅于 2026-11-03
写跳转时,这个选择看起来只是个细节,但它决定了你以后还能不能更改目标地址。浏览器把 301 理解为“这个地址已永久迁移”并记住它;302 的意思是“这次去那里”。对于印在二维码上或贴在简介里、会持续使用好几个月的链接,这个区别比跳转中的任何其他东西都重要。本指南说明该用哪个状态码、为什么,以及商店跳转还应该发送什么。
问题所在
- 301 告诉浏览器这次迁移是永久的,浏览器会记住它:下一次访问可能不询问你的服务器就直接去商店。
- 如果商店网址以后变了,比如新的应用页面、新的包名、修正了拼写错误,回访者仍可能被送到旧地址。
- 按设备跳转会对 iPhone 和 Android 手机给出不同的回答,而永久跳转无法表达这一点。
- 被搜索引擎收录的跳转网址,会多出一个只为把人送往别处而存在的页面。
有了 onestore.link
- 以 302(或 307,它还会保留请求方法)响应:浏览器每次访问都会重新询问你的服务器。
- 每次请求都根据访客的 User-Agent 选择目标,这样你做的修改会立即生效。
- 给跳转加上 X-Robots-Tag: noindex 响应头,让短链接本身不出现在搜索结果中。
- onestore.link 以 302 和 X-Robots-Tag: noindex 响应头作答,你可以随时修改商店网址,而无需更改已经分享出去的链接。
怎么做
无需 SDK,无需重新构建。只是一个网址。
- 1
返回临时跳转
根据 User-Agent 选择商店,并以状态码 302 响应。这里以 Cloudflare Worker 为例;同样的逻辑在任何服务器上都适用。
// 临时跳转:浏览器每次访问都会重新询问你的服务器 export default { fetch(req) { const ua = req.headers.get("user-agent") || ""; const ios = "https://apps.apple.com/app/id0000000000"; const android = "https://play.google.com/store/apps/details?id=com.example.app"; const web = "https://example.com/download"; const to = /iPhone|iPad|iPod/.test(ua) ? ios : /Android/i.test(ua) ? android : web; return new Response(null, { status: 302, headers: { Location: to, "X-Robots-Tag": "noindex" } }); }, }; - 2
把电脑送到页面,而不是商店
商店页面无法在电脑上安装任何东西。把电脑访客送到一个带两个商店按钮和二维码的页面,这个页面也能接住自称是 Mac 的 iPad。
- 3
或者使用托管链接
用你的两个商店网址创建一个 onestore.link:它按设备以 302 响应,让短链接不被收录,并允许你以后更改目标。
常见问题
应用下载链接用 301 不好吗?
有风险。浏览器可能会记住 301 并不再询问你的服务器,所以你以后更改的目标,到不了已经访问过这个链接的访客。302 可以零成本避免这个问题。
302 还是 307?
两者都是临时跳转。307 保证请求方法不变;对于人们点击的链接来说,请求始终是 GET,两者表现相同。302 是常见的选择。
302 会影响 SEO 吗?
对这类链接不会。商店跳转不是你想让它获得排名的页面;需要排名的是你的网站。把跳转标记为 noindex,并从你自己的页面链接到你的网站。
onestore.link 返回什么?
对 iPhone 和 iPad 的 User-Agent 返回跳到 App Store 的 302,对 Android 返回跳到 Google Play 的 302,并附带 X-Robots-Tag: noindex 响应头。应用内浏览器和电脑则会看到一个页面,因为在那里,单纯的跳转会失败,或者什么也装不上。
准备好试试了吗?
永久免费,无需密码。大约一分钟,你的链接就能就绪。
创建你的免费链接在比较工具? onestore.link 与 bitly 对比 →