Shopify CLI 与 Headless

Headless 站下架商品返回 200 不是 404 怎么修

现象#

商品删除后访问旧链接,页面显示自定义的“找不到”文案,HTTP 状态码却是 200;Search Console 把这些 URL 标成软 404,数量一直在涨。

原因#

  • loader 返回 null 而不是抛出 Response,框架按成功渲染并默认写 200
  • catch-all 路由吞掉所有未匹配路径,统一渲染空页面
  • Storefront API 对已删除 handle 返回 product: null 而非错误,代码直接渲染空模板
  • 永久下架的商品也用 404,爬虫会反复回抓,没有用 410 明确告知

处理步骤#

  1. loader 里抛 throw new Response(null, {status: 404}),不要返回 null
  2. 永久下架抛 410:throw new Response(null, {status: 410})
  3. catch-all 路由也显式抛 404,不要渲染空白页
  4. 用 curl -o /dev/null -w '%{http_code}' 核对旧链接的状态码
  5. 在 ErrorBoundary 里按 error.status 分支渲染文案,别把所有错误都当 500

验收标准#

旧商品链接返回 404 或 410,Search Console 的软 404 数量停止增长,正常商品仍为 200。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。