🔗onestore.link

开发者

跳转到应用商店应该用 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. 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. 2

    把电脑送到页面,而不是商店

    商店页面无法在电脑上安装任何东西。把电脑访客送到一个带两个商店按钮和二维码的页面,这个页面也能接住自称是 Mac 的 iPad。

  3. 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 响应头。应用内浏览器和电脑则会看到一个页面,因为在那里,单纯的跳转会失败,或者什么也装不上。

准备好试试了吗?

永久免费,无需密码。大约一分钟,你的链接就能就绪。

创建你的免费链接
原创研究在 Instagram 和 TikTok 里打开的应用链接会怎样:实测 74,000 次跳转没人看到的预加载、拒绝打开商店的 TikTok 网页视图、在页面上方弹出的 App Store:我们的跳转日志揭示了什么。

在比较工具? onestore.link 与 bitly 对比 →

其他指南

探索更多