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