Blog Importer automatycznie rejestruje natywne przekierowania 301 Shopify podczas migracji postów na blogu. Zapewnia to płynne przeniesienie rankingów w wyszukiwarkach (SEO) ze starej witryny do nowego sklepu Shopify bez skomplikowanej ręcznej konfiguracji.

Istnieją jednak określone wzorce adresów URL, z którymi natywna funkcja Shopify nie może sobie poradzić.

Nieobsługiwany wzorzec: adresy URL z parametrami zapytania

Standardowa funkcja przekierowań Shopify ma strukturalne ograniczenie: nie potrafi dokładnie identyfikować adresów URL zawierających znak „?” (parametry zapytania).

  • Obsługiwany przykład: example.com/old-post
  • Obsługiwany przykład (parametry na 2. poziomie lub głębiej): example.com/news/?pid=123
  • Nieobsługiwany przykład: example.com/?pid=123 (Sparametryzowane adresy URL bezpośrednio w domenie głównej)

Tego typu adresów URL nie można przekierować za pomocą Blog Importer ani domyślnych ustawień przekierowań Shopify.

Rozwiązanie

Aby pomyślnie zmigrować strony z tymi starszymi strukturami adresów URL, musisz użyć JavaScriptu po stronie klienta, aby ręcznie skierować odwiedzających do właściwej strony w ich przeglądarce.

Dlaczego JavaScript jest niezbędny?

Natywne przekierowania Shopify są przetwarzane po stronie serwera. Systemowo Shopify odrzuca wszelkie informacje po znaku „?” w adresie URL, co uniemożliwia warunkowe kierowanie ruchem na podstawie różnic w parametrach.

Aby to rozwiązać, potrzebujemy „inteligentnego routingu”: JavaScript natychmiast odczytuje pełny adres URL po załadowaniu strony w przeglądarce odwiedzającego i dynamicznie przekierowuje go do właściwego miejsca docelowego.

Jak wdrożyć za pomocą JavaScript (przykładowy kod)

Umieść poniższy kod w pliku theme.liquid swojego motywu Shopify, bezpośrednio przed zamykającym tagiem </head>. Zaktualizuj zmienną redirectMap, aby dopasować stare parametry adresu URL i odpowiadające im nowe ścieżki.

<script>
(function() {
  // Redirect map: Stare parametry URL na nowe ścieżki
  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>