在迁移博客文章时,Blog Importer 会自动注册 Shopify 的原生 301 重定向。 这确保了您的搜索引擎排名(SEO)能从旧网站顺利转移到新的 Shopify 商店,而无需任何复杂的手动配置。

但是,Shopify 的原生功能无法处理某些特定的 URL 模式。

不支持的模式:带查询参数的 URL

Shopify 的标准重定向功能存在一个结构性限制:它无法准确识别包含“?”(查询参数)的 URL

  • 支持的示例: example.com/old-post
  • 支持的示例(第 2 层或更深层的参数): example.com/news/?pid=123
  • 不支持的示例: example.com/?pid=123(直接位于根域名下的参数化 URL

这些类型的 URL 无法使用 Blog Importer Shopify 的默认重定向设置进行重定向。

解决方案

要成功迁移具有这些旧版 URL 结构的页面,您必须使用客户端 JavaScript 在访客的浏览器中手动将其路由到正确的页面。

为什么需要使用 JavaScript

Shopify 的原生重定向是在服务器端处理的。从系统机制上讲,Shopify 会丢弃 URL 中“?”之后的所有信息,这导致无法基于参数差异来有条件地路由流量。

为了解决这个问题,我们需要“智能路由”:在访客浏览器加载页面时,JavaScript 会立即读取完整的 URL,并将其动态重定向到正确的目标位置。

如何通过 JavaScript 进行实施(示例代码)

将以下代码放入您的 Shopify 主题的 theme.liquid 文件中,紧接在闭合的 </head> 标签之前。更新 redirectMap 变量,使其与您的旧 URL 参数及其对应的新路径相匹配。

<script>
(function() {
  // 重定向映射:将旧 URL 参数映射到新路径
  var redirectMap = {
    "?pid=123": "/blogs/news/article-a",
    "?pid=456": "/blogs/news/article-b",
    "?p=789": "/pages/contact"
  };

  var currentQuery = window.location.search;

  if (currentQuery && redirectMap[currentQuery]) {
    window.location.href = redirectMap[currentQuery];
  }
})();
</script>