在轉移部落格文章時,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>