在迁移博客文章时,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>