Blog Importer automaticky registruje nativní přesměrování 301 ve službě Shopify při migraci vašich blogových příspěvků. To zajišťuje plynulý přesun vašich pozic ve vyhledávačích (SEO) ze starého webu do vašeho nového obchodu Shopify bez složité ruční konfigurace.

Existují však specifické vzory adres URL, které nativní funkce Shopify nedokáže zpracovat.

Nepodporovaný vzor: Adresy URL s parametry dotazu

Standardní funkce přesměrování Shopify má strukturální omezení: nedokáže přesně identifikovat adresy URL, které obsahují znak „?“ (parametry dotazu).

  • Podporovaný příklad: example.com/old-post
  • Podporovaný příklad (parametry na 2. úrovni nebo hlouběji): example.com/news/?pid=123
  • Nepodporovaný příklad: example.com/?pid=123 (Parametrizované adresy URL přímo pod kořenovou doménou)

Tyto typy adres URL nelze přesměrovat pomocí Blog Importeru ani výchozího nastavení přesměrování Shopify.

Řešení

Chcete-li úspěšně migrovat stránky s těmito staršími strukturami adres URL, musíte k ručnímu nasměrování návštěvníků na správnou stránku v jejich prohlížeči použít JavaScript na straně klienta.

Proč je JavaScript nezbytný?

Nativní přesměrování Shopify se zpracovávají na straně serveru. Systém Shopify automaticky ignoruje veškeré informace za znakem „?“ v adrese URL, což znemožňuje podmíněné směrování provozu na základě rozdílů v parametrech.

Abychom to vyřešili, potřebujeme „chytré směrování“: JavaScript po načtení stránky v prohlížeči návštěvníka okamžitě přečte celou adresu URL a dynamicky jej přesměruje do správného cíle.

Jak provést implementaci pomocí JavaScriptu (ukázkový kód)

Umístěte následující kód do souboru theme.liquid vaší šablony Shopify bezprostředně před uzavírací značku </head>. Aktualizujte proměnnou redirectMap, aby odpovídala vašim starým parametrům URL a jim odpovídajícím novým cestám.

<script>
(function() {
  // Mapa přesměrování: Staré parametry URL na nové cesty
  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>