Lepszy dokument pomocy
Napisany i utrzymywany dla marek i agencji, które prowadzą migrację witryny. Zwłaszcza jeśli jesteś małym zespołem, który musi wykorzystać każdą godzinę. Ten przewodnik pomoże ci zbudować strategię, dzięki której precyzyjnie wykonasz przekierowania 301 przy migracji na Shopify. Konkretnie ten dokument pomoże ci, jeśli:
- Migrujesz z Wordpressa
- Migrujesz z Magento
- Migrujesz z Salesforce
- Migrujesz z Sitecore
- Migrujesz z BigCommerce
- Migrujesz z Webflow
- Migrujesz z własnej witryny w PHP
Jeśli prowadzisz projekt obejmujący złożone mapowania przekierowań 301 i potrzebujesz zespołu, który zjadł zęby na tego rodzaju pracy, skontaktuj się z nami.
Logika przekierowań URL w Shopify: przegląd
Oficjalny dokument pomocy Shopify o przekierowaniach URL znajdziesz tutaj. To zwięzły dokument z ogólnymi wskazówkami, po które osoba zarządzająca sklepem Shopify może sięgnąć przy dodawaniu pojedynczych i zbiorczych przekierowań 301. Brakuje w nim szczegółów na temat typów adresów URL, które sklep Shopify obsługuje natywnie, i ten raport ma te luki wypełnić.
Podsumowanie ustaleń o działaniu przekierowań URL w Shopify
- Logika przekierowań URL w Shopify jest bardzo solidna.
- W naszym teście 100 różnych formatów ciągów URL Shopify funkcjonalnie obsłużył 99 ze 100 typów.
- Natywny system nie obsługuje symboli wieloznacznych w przekierowaniach URL.
- Aktualizowanie istniejących ścieżek przekierowań było łatwe przy użyciu narzędzia importu, o ile trzymasz się nieudokumentowanych zasad Shopify.
- Istnieją limity łącznej liczby przekierowań, którymi zarządzają sklepy Shopify i ShopifyPlus.
- Istnieją limity łącznej liczby znaków w ciągu przekierowania URL.
- Na szczęście nie da się tworzyć łańcuchów przekierowań 301. (Skorygowane w teście z 2026 roku. Zabezpieczenie sprawdza tylko jeden kierunek.)
- Dla adresów URL z parametrami obowiązuje wiele wyjątków i zasad.
- Interfejs zarządzania przekierowaniami URL jest przyjazny, ale przydałoby mu się więcej szczegółów.
- Testy nie objęły opcji przekierowań dostępnych dla Hydrogen i Oxygen.
- Obecnemu systemowi przekierowań URL w Shopify dajemy ocenę przydatności 85%.
Ocena została obniżona o 5% za brak obsługi symboli wieloznacznych, o 1% za jedyny nieobsługiwany typ ciągu URL, o 2% za limity długości znaków, o 3% za dziwne zachowanie przy adresach URL z parametrami i o 4% za brak istotnych informacji o zarządzaniu danymi w interfejsie przekierowań.
Testy przeprowadzono 19 czerwca 2024.
Każda teza z tego tekstu została ponownie sprawdzona na działającym sklepie Shopify w planie standardowym, przez Admin GraphQL API i na prawdziwych żądaniach do sklepu. Większość ustaleń z 2024 roku się obroniła. Dziewięć nie, a dwa z nich odwracają to, co opublikowaliśmy: zabezpieczenie przed łańcuchami sprawdza jeden jedyny kierunek i o powstaniu łańcucha decyduje kolejność tworzenia rekordów, a przekierowanie na /services działa, podczas gdy wszystko poniżej zwraca 404.
Ustalenia z 2024 roku zostają na swoim miejscu. Każda korekta jest oznaczona przy tezie, której dotyczy, żeby każdy, kto działał według pierwotnej wersji, zobaczył, co się zmieniło.
Nasza metodyka testowania przekierowań
Chcieliśmy odpowiedzieć naszymi testami na kilka pytań, żeby pomóc uniknąć pułapek w zasadach przekierowań 301 w Shopify:
- Jakich znaków lub kombinacji ciągów nie obsługuje system przekierowań URL?
- Czy istnieją limity długości ciągu URL?
- Czy istnieje maksymalna liczba rekordów przy imporcie zbiorczym?
- Czy system obsługuje przekierowania z symbolami wieloznacznymi?
- Czy po imporcie zachodzi automatyczne formatowanie lub konwersja ciągów, która zmienia pierwotne dane?
Dla porównania, tutaj jest nasza pełna lista adresów URL, której użyliśmy do przetestowania tych różnych warunków. Testy prowadziliśmy w planie standardowym Shopify (nie ShopifyPlus).
11 ustaleń, które pomogą przy przekierowaniach w Shopify
Z tymi typami ciągów URL Shopify sobie nie radzi
Lista formatów ciągów URL, których Shopify nie potrafił obsłużyć, jest krótka: był tylko jeden typ ciągu, którego system nie przyjął. Ciągi ze znakiem średnika po znaku równości, na przykład:
/page?param=;semicolon
Godne uwagi w tym ciągu jest to, że system Shopify zamienia znak specjalny średnika na wartość zakodowaną w adresie URL i w tabeli przekierowań wygląda to tak:
/page?param=%3Bsemicolon
Kiedy wpiszesz niezakodowany ciąg URL w pasku adresu przeglądarki, dostaniesz błąd 404.
/page?param=;semicolon
/page?param=%3Bsemicolon
To zachowanie odbiega od obsługi innych znaków specjalnych. Jeśli w pasku adresu zostanie wpisany ciąg URL z niezakodowanymi znakami, na przykład z prawym nawiasem klamrowym:
/page?param=}
Shopify zakoduje go automatycznie w chwili odebrania żądania i błąd 404 nie wystąpi.
/page%7Drightbrace
Warto też zauważyć, że inne warianty ciągu URL z niezakodowanym średnikiem przechodzą walidację w systemie przekierowań Shopify, na przykład:
/page;semicolon
Dane sugerują, że błąd 404 pojawia się tylko wtedy, gdy niezakodowany średnik występuje po znaku równości.
Błąd 404 jest potwierdzony, ale nie chodzi o to, że system nie przyjął rekordu. Shopify przyjmuje rekord i zapisuje go ze średnikiem zakodowanym procentowo jako %3b. Rozbieżność powstaje przy żądaniu, bo przychodzący adres URL z surowym średnikiem nigdy nie pasuje do zakodowanego rekordu.
Żądanie postaci zakodowanej zwraca 301 jak zwykle. Tam, gdzie kontrolujesz linki przychodzące, zakodowanie średnika rozwiązuje sprawę. Tam, gdzie surowy średnik przychodzi z zewnętrznych linków poza twoją kontrolą, tego formatu nie da się niezawodnie przekierować.
Shopify nie obsługuje przekierowań z symbolami wieloznacznymi
Przekierowania z symbolami wieloznacznymi wciąż są na liście życzeń wielu użytkowników Shopify. Fora wsparcia są zalane prośbami o tę funkcję. Do dziś Shopify milczy na temat tego, gdzie znalazłaby się na mapie drogowej produktu.
Na razie właściciele witryn planujący przeprowadzkę na Shopify powinni wiedzieć, że natywne Shopify i ShopifyPlus tej opcji nie oferują.
Czym są przekierowania z symbolami wieloznacznymi?
Przekierowania z symbolami wieloznacznymi to rodzaj przekierowania URL, który pozwala skierować wiele adresów URL pasujących do określonego wzorca na jeden cel. Przydaje się to szczególnie przy migracji witryny, reorganizacji treści albo zarządzaniu dużą liczbą podobnych adresów URL. Zamiast ustawiać osobne przekierowanie dla każdego adresu URL, używasz znaku wieloznacznego (zwykle *), który reprezentuje dowolny ciąg znaków.
Załóżmy, że przebudowujesz blog i przenosisz wszystkie wpisy z katalogu /blog/ do /articles/. Zamiast ustawiać osobne przekierowanie dla każdego wpisu, możesz użyć przekierowania z symbolem wieloznacznym:
From: /blog/*
To: /articles/*
This wildcard redirect will automatically map:
/blog/post1 to /articles/post1
/blog/post2 to /articles/post2
/blog/post3 to /articles/post3
To upraszcza proces przekierowania i zapewnia, że wszystkie adresy URL w /blog/ trafiają płynnie do nowej lokalizacji w /articles/. Na dzień publikacji tego artykułu standardowe sklepy Shopify i ShopifyPlus nie mają tej możliwości bez wsparcia aplikacji.
Nadal brak obsługi symboli wieloznacznych, a ponowny test znalazł tę część, która kosztuje ludzi prawdziwy ruch. Shopify przyjmuje składnię z symbolem wieloznacznym bez słowa sprzeciwu. Rekord utworzony jako /old-blog/* zapisuje się, pojawia się w tabeli przekierowań i nie zgłasza błędu. Gwiazdka jest zapisywana jako zwykły znak, więc jedyny adres URL, do jakiego kiedykolwiek pasuje, to taki, który dosłownie zawiera gwiazdkę.
To gorsze niż jawne odrzucenie, bo nic nie sygnalizuje błędu, dopóki prawdziwy ruch nie zacznie dostawać błędów 404. Rozpisz wszystkie symbole wieloznaczne w swoim arkuszu przekierowań na jawne ścieżki, zanim go zaimportujesz.
Shopify robi, co może, żeby nie powstawały łańcuchy przekierowań
W tabeli przekierowań Shopify jest przyjemne zabezpieczenie, które nie pozwala tworzyć łańcuchów przekierowań. Jeśli spróbujesz utworzyć przekierowanie na stronę, która jest już wartością w polu Przekieruj z, dostaniesz błąd.
W tym teście rekordy URL, które próbowaliśmy utworzyć, wyglądały tak i nie zostały dopuszczone:
/BOTH redirects to /SHORT/SHORT redirects to /homepage
Zabezpieczenie istnieje i jest węższe, niż je opisaliśmy. Sprawdza jeden kierunek, a podczas ponownego testu powstał obok niego działający łańcuch o dwóch skokach.
Shopify odrzuca przekierowanie, którego cel jest już źródłem innego przekierowania, komunikatem Target can't redirect to another redirect. Odrzuca przekierowanie wskazujące na samo siebie, komunikatem Target can't be the same as path, i blokuje bezpośrednie pętle w obie strony.
Nie sprawdza kierunku odwrotnego. Utwórz /a na /b, kiedy pod /b nic nie istnieje, a później utwórz /b na /c, a oba zostaną przyjęte. Shopify nigdy nie wraca do pierwszego rekordu, a ty masz teraz działający łańcuch:
GET /a
301 to /b
301 to /
final: 200, 2 hops
O powstaniu łańcucha decyduje sama kolejność tworzenia. Import zbiorczy stosuje wiersze w kolejności z pliku, a arkusze migracyjne rzadko są posortowane tak, żeby tego uniknąć, więc na tym zabezpieczeniu nie da się oprzeć planu. Po każdym dużym imporcie weź próbkę przekierowań i policz skoki:
curl -sIL https://yourstore.com/old-path -o /dev/null -w "hops: %{num_redirects}\n"
Wszystko powyżej 1 to łańcuch.
Czym są łańcuchy przekierowań?
Łańcuchy przekierowań powstają, gdy adres URL przekierowuje na inny adres URL, który z kolei przekierowuje na jeszcze inny, tworząc sekwencję, czyli łańcuch przekierowań. Dzieje się to często niechcący, gdy z czasem powstaje wiele przekierowań bez porządnego zarządzania.
Łańcuchy przekierowań są problematyczne, bo spowalniają ładowanie stron, szkodzą SEO i psują doświadczenie użytkownika. Każde kolejne przekierowanie dokłada opóźnienie, bo przeglądarka musi przejść każdy krok łańcucha, zanim dotrze do docelowego miejsca.
Jeśli na przykład masz ustawione takie przekierowania:
/old-page redirects to /new-page
/new-page redirects to /latest-page
Kiedy użytkownik wchodzi na /old-page, trafia najpierw na /new-page, a zaraz potem zostaje przekierowany na /latest-page, co daje łańcuch przekierowań.
Nowe zasady przy ustawianiu przekierowań w Shopify
Naszym największym odkryciem w testach jest to, że dokumentacja Shopify jest nieaktualna. Według Shopify, jeśli próbujesz przekierować cokolwiek, co zaczyna się od tych zastrzeżonych prefiksów, twoje reguły przekierowań nie zostaną utworzone:
/apps
/application
/cart
/carts
/orders
/services
/products
/collections
/collections/all
Okazało się, że to nieprawda.
/apps/application/carts/orders/services/cart/people
Cart był wyjątkiem. Sam w sobie jest zastrzeżony, a działa, gdy stoi za nim podkatalog.
/cart/products/collections/collections/all
/cart/people/carts/people/products/people/collections/people
/cart/products/collections/collections/all
Powyższe obserwacje się bronią. Wyjaśnienie nie, a prawdziwa reguła obejmuje znacznie więcej niż listę czterech prefiksów.
Prawdziwa trasa sklepu zawsze wygrywa z przekierowaniem. Tam, gdzie pod adresem URL naprawdę istnieje strona, Shopify serwuje stronę i ignoruje przekierowanie. Rekord zostaje przyjęty, siedzi w twojej tabeli przekierowań i nic nie robi. Bez błędu, bez ostrzeżenia.
Zmienną nie jest prefiks. Jest nią istnienie trasy. Przekierowanie ustawione na działającym adresie URL produktu zostało przyjęte i po cichu zignorowane, podczas gdy identyczny prefiks z uchwytem, który nie istnieje, zwrócił 301:
/products/ai-skillset-package-001 -> 200, the product page
/products/zz20260727 -> 301, the redirect fires
Traktuj więc powyższą listę jako przykłady, a nie jako regułę. Obejmuje ona też każdy działający produkt, każdą kolekcję, stronę i wpis blogowy w twoim sklepie. Przekierowanie na opublikowanym adresie URL produktu pozostaje bezczynne tak długo, jak długo ten produkt nadal się otwiera.
Dla migracji oznacza to, że kolejność ma znaczenie. Najpierw wycofaj z publikacji albo usuń stary zasób, a potem potwierdź, że przekierowanie działa. Utworzone, kiedy strona jeszcze żyje, będzie wyglądać, jakby nic się nie stało.
/services to wyjątek i działa dokładnie odwrotnie. Przekierowanie na samo /services zwraca 301. Przekierowanie na cokolwiek poniżej, na przykład /services/consulting, zwraca 404, mimo że rekord zapisuje się bez słowa sprzeciwu. Powtórzyliśmy to cztery razy w ciągu około 45 sekund, żeby wykluczyć opóźnienie propagacji, a rekord był obecny przez cały czas. Każdy inny prefiks z tej grupy działał z podkatalogami. Prawdopodobna przyczyna jest taka, że Shopify wewnętrznie kieruje /services/* do proxy aplikacji i punktów systemowych, więc te żądania nigdy nie docierają do tabeli przekierowań, choć samego mechanizmu bezpośrednio nie zweryfikowaliśmy.
Kto migruje witrynę z sekcją /services/, powinien wiedzieć, że żadne z tych przekierowań nie zadziała. Przemapuj je na inną strukturę ścieżek albo obsłuż je w warstwie DNS lub proxy.
Tworzenie i aktualizowanie przekierowań URL w Shopify jest łatwe
Utworzenie nowego przekierowania w Shopify jest proste. Użytkownicy mają dwie opcje:
- Tworzenie pojedynczych przekierowań URL, po jednym
- Tworzenie przekierowań zbiorczo, przez plik CSV, tutaj jest najnowszy szablon do tego importu.
Dodając adresy URL do systemu Shopify, użytkownicy mogą wpisać względne ścieżki URL bez domeny najwyższego poziomu dla źródła (przekieruj z) oraz bezwzględne lub względne ścieżki URL w celu (przekieruj do). Przykład:
/example_product.php
Tworzenie pojedynczych przekierowań URL
Zasady przekierowań w Shopify nie pozwolą utworzyć tego samego przekierowania URL dwa razy, jeśli korzystasz z interfejsu pojedynczych przekierowań.
Gdy adres URL znajdzie się już na liście w tabeli pod Przekieruj z, przy próbie dodania go ponownie dostaniesz błąd.
Jeśli chcesz zaktualizować pojedynczy rekord URL, musisz znaleźć go w tabeli przekierowań albo skorzystać z importu zbiorczego. Jeśli adres URL, który już istnieje, znajdzie się w pliku importu zbiorczego, pole Przekieruj do tego rekordu zostanie zaktualizowane wartością z pliku CSV.
Radzimy zawsze importować przekierowania w rozsądnych, wydajnych partiach. Jeśli na przykład masz 10 000 przekierowań URL, importuj po 1000 naraz i sprawdzaj je, jeśli masz czas. Lepiej wyłapać błędy w mniejszych zbiorach, niż tropić je w większych.
Przy zbiorczych przekierowaniach URL w Shopify myśl do przodu
Żeby utworzyć przekierowania zbiorczo, wypełnij plik CSV nagłówkami, których wymaga Shopify, zrób mapowania jeden do jednego i upewnij się, że wszystkie adresy URL są sformatowane jako ścieżki względne. Jeśli utworzysz plik z bezwzględnymi ścieżkami w polu Przekieruj z albo Przekieruj do, Shopify weźmie sprawy w swoje ręce. Oto kilka scenariuszy:
https://www.wislr.com/path/to/resource%20with
/path/to/resource%20with
www.wislr.com/unicode/test?value=%E2%9C%93%20co.wislr.com/mix/of%20encoded
/www.wislr.com/unicode/test?value=%E2%9C%93%20/co.wislr.com/mix/of%20encoded
wislr.com/nested/directory/structure?param1=value1
/wislr.com/nested/directory/structure?param1=value1
Wniosek jest taki: sprawdź plik importu dwa razy, zanim go użyjesz. Inaczej utworzysz reguły przekierowań URL, które nie działają tak, jak potrzebujesz.
Jeśli rekord przekierowania już jest w tabeli, a te same wartości znajdą się w pliku importu, Shopify zaktualizuje rekord najświeższymi danymi z pliku. Naszym zdaniem to bardzo pomocne, o ile chcesz, żeby ten rekord się zaktualizował. Tym bardziej warto sprawdzić dane dwa razy.
Radzimy zawsze importować przekierowania w rozsądnych, wydajnych partiach. Jeśli na przykład masz 10 000 przekierowań URL, importuj po 1000 naraz i sprawdzaj je, jeśli masz czas. Lepiej wyłapać błędy w mniejszych zbiorach, niż tropić je w większych.
Shopify nie egzekwuje limitu 1000 wierszy na plik. Pojedynczy import 1051 wierszy przeszedł bez jednego błędu w 48 sekund, co daje mniej więcej 1300 wierszy na minutę.
Partie po około 1000 wierszy nadal mają sens, ale z innego powodu niż twardy limit. Mniejsze pliki zawodzą czytelniej. Jeśli import 20 000 wierszy pójdzie źle, masz dużo mniejsze pojęcie o tym, które wiersze go zepsuły, niż gdybyś puścił dwadzieścia plików i patrzył na liczniki.
Po każdym imporcie odczytaj createdCount, updatedCount i failedCount. Niezerowy failedCount to jedyny sygnał, jaki dostaniesz, że wiersze zostały odrzucone.
Opisane wyżej zachowanie przy duplikatach potwierdziło się dokładnie tak, jak je zapisaliśmy. Ścieżka, która już jest w tabeli przekierowań, dostaje nadpisany cel i jest raportowana w updatedCount, zachowując swój pierwotny identyfikator rekordu. Dzięki temu import CSV można bezpiecznie powtórzyć, co w trakcie migracji jest naprawdę przydatne. Oznacza to też, że nieaktualny arkusz po cichu nadpisze poprawki, które wprowadziłeś ręcznie po ostatnim imporcie.
Zbudujemy dla ciebie mapę przekierowań.
Zmapowaliśmy przekierowania w ponad 100 migracjach, w tym w przeprowadzce 27 000 adresów URL na Shopify Plus. Budujemy plik i sprawdzamy go pod kątem każdego limitu z tej strony, zanim trafi do importu. Po przełączeniu sami czytamy odpowiedzi na żywo, zamiast wierzyć w to, co mówi tabela przekierowań.
Limit rekordów przekierowań URL w Shopify
Wszystko, co dobre, ma swoją granicę, a zasady przekierowań w Shopify nie są wyjątkiem. Dla przekierowań URL są dwa progi.
Plany Shopify (bez Plus):
Maksymalnie 100 000 przekierowań URL
Plany ShopifyPlus:
Maksymalnie 20 000 000 przekierowań
Tych limitów nie testowaliśmy, to byłoby szaleństwo. To aktualne udokumentowane parametry platformy. Miej je na uwadze przy planowaniu przekierowań i priorytetyzuj adresy URL o największym ruchu i przychodzie. Z naszej wiedzy Shopify tych limitów nie podnosi, mimo nieustannych próśb z forów wsparcia.
Limit znaków w adresach URL w Shopify
Tutaj system przekierowań Shopify robi się ciekawy. Oficjalne wytyczne Shopify nie podają sztywnych limitów znaków.
Żeby sprawdzić limity znaków w adresie URL przekierowania, najpierw zbudowaliśmy bardzo długie ciągi i spróbowaliśmy je zaimportować. Zaczęliśmy od adresu URL o długości 2000 znaków, bo przeglądarki obsługują żądania URI do 2083 znaków. Oto ta piękność w całej okazałości:
/2000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBcccccccccccccccccccccccccccccccccccccccccccccccccccDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Naszą pierwszą metodą był import adresu URL o długości 2000 znaków przez szablon zbiorczego importu i wtedy w Shopify odezwały się alarmy. Próg, który oficjalnie odkryliśmy, to limit 1024 znaków dla ciągów przekierowań URL, wliczając początkowy ukośnik /.
- Passed Adres URL o długości 300 znaków
- Passed Adres URL o długości 600 znaków
- Passed Adres URL o długości 1000 znaków
- Failed Adres URL o długości 2000 znaków
Kilka ważnych i nieudokumentowanych zasad przekierowań w Shopify
Shopify normalizuje litery w twoich ciągach URL. Oznacza to, że niezależnie od tego, czy wpiszesz wielką czy małą literę, żądania URL dla tych różnych wzorców obsłuży tak samo. Poniższe adresy URL trafią na tę samą stronę, nawet jeśli istnieją osobne rekordy:
/CASE/TEST.html
/case/test.html
/Case/Test.html
Ciąg zapisany małymi literami ma pierwszeństwo przed pozostałymi:
/case/test.html
W naszych testach, mimo że istnieją dwa osobne rekordy w polu Przekieruj z z różnymi wartościami w polu Przekieruj do, dla obu rekordów zawsze serwowana jest strona /about.html:
#1
/Case/Test.html [redirect to] /homepage
#2
/case/test.html [redirect to] /about.html
Intrygujące i potencjalnie irytujące jest to, że Shopify pozwala wpisać wszystkie te unikalne wartości do tabeli przekierowań, a serwuje tylko jedną z nich. Radzimy uważnie przejrzeć dane, jeśli czujesz, że twoja taksonomia adresów URL może wpaść w te wzorce, zanim zaimportujesz je do Shopify.
W przekierowaniach Shopify możesz używać bezwzględnych ścieżek URL
Bezwzględne ścieżki URL w przekierowaniach są w porządku, jak pokazał nasz test, o ile stoją w polu Przekieruj do. Mogą prowadzić na dowolny adres URL. Oto przykład, w którym ścieżka URL po wywołaniu przekierowuje na profil LinkedIn:
[Redirect from]
/Case/Test.html
[Redirect to]
https://www.linkedin.com/wislr
Poza tym w polu Przekieruj do Shopify nie usuwa domen najwyższego poziomu, nawet jeśli chodzi o twój własny sklep Shopify.
Adresy URL z parametrami
W naszych testach Shopify zachowywał adresy URL z parametrami, z pewnymi wyjątkami. Jeśli masz adresy URL zaindeksowane z wieloma unikalnymi ciągami parametrów, te unikalne ciągi można dodać do tabel przekierowań Shopify i skierować na unikalne cele. Zrobiliśmy ten test na powszechnej taksonomii dla takich adresów, na parametrach UTM. Na przykład:
Ten ciąg URL jest w polu Przekieruj z w tabeli przekierowań i trafił do zamierzonego celu:
/how-is-pkl?utm_campaign=301s+in+2024&utm_content=blue&utm_id=3012024&utm_medium=display&utm_source=google&utm_term=redirects
Zmodyfikowaliśmy ciąg URL i usunęliśmy ostatni parametr &utm_term=redirects, co dało błąd 404:
/how-is-pkl?utm_campaign=301s+in+2024&utm_content=blue&utm_id=3012024&utm_medium=display&utm_source=google
To zachowanie powtórzyło się w innych testach z innymi parametrami jako wartościami, co potwierdziło, że Shopify traktuje adresy URL z parametrami jak dosłowne ciągi. Nie skraca adresu URL do adresu bazowego, jeśli usuniesz parametr z adresu przekierowania, o ile ten adres URL nie istnieje w witrynie Shopify.
Żeby to jeszcze potwierdzić, skierowaliśmy adres URL na samego siebie, na co Shopify domyślnie nie pozwala. Dostaniesz taki komunikat:
Ten wpis jest dozwolony, gdy parametry są w polu Przekieruj z. Nie stanowi pętli przekierowań, ale sądząc po zachowaniu w przeglądarce, nasz test pokazał, że Shopify ignoruje ten rekord. Gdy adres URL z pola Przekieruj z zostanie wywołany, Shopify serwuje pełny ciąg URL z parametrami, a nie stronę główną, jak zapowiada tabela:
Ten wpis jest dozwolony, ale Shopify nie dokleja parametrów do ładowanej strony, jak zakłada reguła. Ładuje się tylko adres główny. Parametry nigdy nie są dodawane do ładowanego adresu URL:
Naszą ostatnią obserwacją o adresach URL z parametrami jest to, że Shopify w niektórych przypadkach przepisuje dane, które mu podasz. Tak, Shopify przepisuje dane URL, które mu podasz, dla niektórych parametrów.
Oto przykłady, w których nasze testy znalazły ten wzorzec.
Pierwotne dane przekierowania przyjęte przez Shopify:
/test?name=John&Doe
Shopify przepisał ciąg tak, żeby Doe był pierwszym atrybutem parametru w ciągu:
/test?Doe&name=John
Pierwotne dane przekierowania przyjęte przez Shopify:
/user?name=John&age=30&active=true
Shopify przepisał ciąg tak, żeby parametry stały w nowej kolejności:
/user?active=true&age=30&name=John
Nasze testy sugerują, że Shopify próbuje ustawić parametry w kolejności alfabetycznej. Zastanawialiśmy się, czy to błąd, bo ustaliliśmy, że Shopify traktuje adresy URL z parametrami jak dosłowne ciągi, więc po co podkopywać tę zasadę przepisywaniem kolejności parametrów. Obecnie ciągi URL z wieloma wartościami parametrów nigdy nie zachowają swojej struktury. Dla niektórych systemów zarządzania treścią może to mieć poważne konsekwencje.
Trzy korekty do tej sekcji.
Parametry z przychodzącego żądania są przenoszone do celu. Pierwotne sformułowanie mówi, że nigdy nie są dodawane do ładowanego adresu URL, a to jest prawdą tylko dla opisanych wyżej ścieżek źródłowych z parametrami. Jeśli ścieżka źródłowa przekierowania sama nie niesie parametrów, dopisywane jest to, co przychodzi w żądaniu:
GET /old-page -> 301 to /new-page
GET /old-page?utm_source=x -> 301 to /new-page?utm_source=x
Przekierowania nie usuną parametrów za ciebie. Usuwanie musi się dziać w warstwie powyżej Shopify.
Przepisanie zamienia też na małe litery, nie tylko zmienia kolejność. Powyższy rozpisany przykład zachowuje wielkie litery, a Shopify tego nie robi. Ścieżka przesłana jako /test?name=John&Doe jest zapisywana jako /test?doe&name=john. Wartości są zamieniane na małe litery razem z kluczami, więc tabela przekierowań zestawiona ze źródłowym arkuszem będzie wyglądać, jakby import uszkodził dane.
Dopasowanie nie jest dosłownym porównaniem ciągów. Shopify normalizuje i zapisany rekord, i przychodzące żądanie, zanim je porówna, więc wielkość liter i kolejność parametrów nie mają znaczenia. Wobec rekordu zapisanego jako /page?doe&name=john wszystkie warianty ?name=John&Doe, ?Doe&name=John i ?name=john&doe zwracają 301.
Znaczenie ma to, które parametry są obecne. Każdy parametr z zapisanej ścieżki musi pojawić się w żądaniu. Pomiń jeden, a dostaniesz 404, a nie częściowe dopasowanie, więc pierwotna teza się broni: przekierowanie z parametrami działa tylko dla dokładnie tej kombinacji parametrów.
Interfejs przekierowań URL w Shopify wymaga odświeżenia
Podczas intensywnego korzystania z narzędzia przekierowań Shopify jedne elementy doceniliśmy, a innych nam brakowało.
Doceniamy te funkcje:
- Przyciski i obsługę zbiorczego importu przekierowań
- Filtrowanie i szybkie wyszukiwanie w taksonomii adresów URL
- Eksport adresów URL
- Łatwość utworzenia pojedynczego adresu URL
Uznaliśmy, że narzędziu brakuje tych danych i funkcji:
- Łącznej liczby zaimportowanych adresów URL
- Łatwiejszego sposobu na wklejenie do systemu więcej niż jednego adresu URL. Jeśli chcesz dodać więcej niż jeden adres naraz, musisz użyć dokumentu importu. Przykładem, w którym kopiuj i wklej by się przydało, jest zestaw adresów URL, które mają prowadzić do tego samego celu.
Import jest szybki, cofnięcie importu już nie
Dodane po teście powtórzonym 27 lipca 2026.
Tworzenie przekierowań zbiorczo idzie szybko. Usuwanie ich zbiorczo już nie, a różnica jest na tyle duża, że zmienia sposób planowania importu.
| Operacja | Metoda | Zmierzono |
|---|---|---|
| Utworzenie 1051 przekierowań | Import CSV, jeden plik | 48 sekund |
| Usunięcie 1051 przekierowań | urlRedirectDelete, po jednym |
226 sekund |
Szybkie mutacje zbiorczego usuwania są zablokowane. urlRedirectBulkDeleteBySearch, urlRedirectBulkDeleteByIds i urlRedirectBulkDeleteAll wymagają zakresu write_online_store_navigation i aktywnej sesji użytkownika. Aplikacja uwierzytelniająca się poświadczeniami klienta, a tak działa większość skryptów migracyjnych, nie może ich wywołać i zostaje z usuwaniem rekord po rekordzie.
Planuj importy tak, jakby trudno je było odwrócić, bo tak właśnie jest. Sprawdź plik najpierw w sklepie deweloperskim albo importuj w transzach, które jesteś w stanie cofnąć ręcznie. Nie wypychaj pliku z 50 000 wierszy, którego nie przetestowałeś, w założeniu, że da się go szybko wycofać.
Import CSV i Admin API inaczej traktują duplikaty
Dodane po teście powtórzonym 27 lipca 2026.
Ten przewodnik jest napisany wokół procesu CSV, w którym zduplikowana ścieżka aktualizuje istniejący rekord. API robi odwrotnie:
create /existing-path -> /pages/about
(where /existing-path already redirects to /)
REJECTED: "Path has already been taken"
Kto przenosi proces z CSV na Admin API, musi odpytać o istniejący rekord i wywołać urlRedirectUpdate albo usunąć i utworzyć od nowa. Proste przeniesienie logiki importu polegnie na każdej ścieżce, która już istnieje.
Jak przetestować przekierowania Shopify po starcie
Wszystko powyżej opisuje, co Shopify przyjmie. Nic z tego nie mówi, czy zaimportowane przekierowania faktycznie działają w żywym sklepie, a to zupełnie inne pytanie. Przekierowanie może zaimportować się czysto, pojawić się w panelu i nadal nie robić tego, czego oczekujesz, gdy na drodze stanie motyw, aplikacja albo proxy.
Testuj spoza sklepu, a nie klikając po przeglądarce, bo przeglądarka ukrywa dokładnie to, co musisz zobaczyć: kod statusu. Wywołaj stary adres URL i przeczytaj nagłówki odpowiedzi.
curl -sIL https://yourstore.example/old-product-url
W wyniku przeczytaj trzy rzeczy:
- Kod statusu na pierwszym skoku. Chcesz
301.302jest tymczasowe i inaczej przekazuje wartość, co ma znaczenie, kiedy chodzi właśnie o trwałą przeprowadzkę. - Liczbę skoków. Każda linia
HTTP/w wyniku to jeden skok. Dwie lub więcej oznacza, że zbudowałeś łańcuch, a rozwiązaniem jest wskazanie pierwotnym źródłem docelowego adresu zamiast zostawiania kroku pośredniego. - Ostatni status. Ostatnia linia powinna brzmieć
200. Przekierowanie kończące się kodem404jest gorsze niż brak przekierowania, bo w arkuszu wygląda na załatwione.
Potem przetestuj formy, o które łatwo zapomnieć. Zrób to samo sprawdzenie na adresie URL z parametrem śledzącym, żeby potwierdzić, że ciąg zapytania dociera do celu, na domenie głównej obok www oraz po zwykłym http, a nie tylko po https. Przetestowaliśmy dokładnie to na działającym sklepie i parametr dotarł do celu nienaruszony, ale chodzi o to, żeby sprawdzić to w swoim sklepie, a nie ufać ogólnej odpowiedzi, bo motyw albo aplikacja mogą zmienić wynik.
Jedno zachowanie warto znać, zanim wpadniesz w panikę: po zmianie lub usunięciu przekierowania węzeł brzegowy Shopify potrafi serwować starą odpowiedź jeszcze przez około trzydzieści sekund, podczas gdy wersja tego samego adresu z obejściem cache zwraca już nową. Daj mu minutę i przetestuj ponownie z dopisanym unikalnym ciągiem zapytania, zanim uznasz, że przekierowanie nie zadziałało.
Po pełną sekwencję wokół migracji, a nie pojedynczego przekierowania, przejdź przez listę kontrolną migracji witryny, która obejmuje mapowanie, dzień startu i monitorowanie po starcie, w które to wszystko się wpisuje.
Podsumowanie
System zarządzania przekierowaniami 301 w Shopify wystarcza większości firm, ale nie jest jeszcze na poziomie enterprise. Mamy nadzieję, że z czasem dojdą do niego przekierowania z symbolami wieloznacznymi i więcej rekordów przekierowań w planach standardowych i Plus. To, że da się korzystać z ich systemu przekierowań, i to, ile typów formatów URL obsługuje, sprawia, że wystawiamy im wysoką ocenę przydatności.
Jeśli prowadzisz projekt obejmujący złożone mapowania przekierowań 301 i potrzebujesz zespołu, który zjadł zęby na tego rodzaju pracy, skontaktuj się z nami.
Najczęściej zadawane pytania
Komu ma pomóc baza wiedzy WISLR o przekierowaniach URL w Shopify?
Nasza baza wiedzy służy przede wszystkim markom i agencjom prowadzącym migracje witryn na Shopify. Szczególnie przydaje się małym zespołom, które muszą wykorzystać każdą godzinę, bo pomaga klientom dopasować i wykonać nawet 100 000 przekierowań URL bez marnowania czasu.
Czy Shopify ma oficjalny dokument pomocy o przekierowaniach URL?
Tak, Shopify utrzymuje oficjalny dokument pomocy o przekierowaniach URL pod adresem help.shopify.com. Podaje on ogólne wskazówki dotyczące dodawania pojedynczych i zbiorczych przekierowań 301, a nasz przewodnik uzupełnia go o szczegółowe dane na temat typów adresów URL i ograniczeń platformy.
Jakich ciągów URL Shopify nie obsługuje?
Shopify ma tylko jeden nieobsługiwany format ciągu URL: ciągi z niezakodowanym znakiem średnika po znaku równości (np. /page?param=;semicolon). Wszystkie pozostałe formaty adresów URL są obsługiwane, łącznie z zakodowanymi średnikami i średnikami w innych miejscach.
Czy Shopify obsługuje przekierowania z symbolami wieloznacznymi lub wyrażeniami regularnymi?
Nie, Shopify obecnie nie obsługuje w swoim natywnym systemie przekierowań ani symboli wieloznacznych, ani wzorców wyrażeń regularnych. To ograniczenie dotyczy zarówno standardowych sklepów Shopify, jak i sklepów Shopify Plus.
Czym są przekierowania z symbolami wieloznacznymi?
Przekierowania z symbolami wieloznacznymi pozwalają skierować wiele adresów URL pasujących do określonego wzorca na jeden cel. Na przykład wszystkie adresy URL w /blog/* na /articles/*. Funkcja jest często zgłaszana jako życzenie, ale natywnie w Shopify obecnie nie jest dostępna.
Czy Shopify potrafi zapobiec tworzeniu łańcuchów przekierowań?
Tak, Shopify ma wbudowane zabezpieczenia, które zapobiegają łańcuchom przekierowań. System nie pozwoli utworzyć przekierowania na adres URL, który już jest przekierowywany gdzie indziej.
Czym są łańcuchy przekierowań?
Łańcuchy przekierowań powstają, gdy adresy URL przekierowują przez kilka kroków, zanim dotrą do docelowego miejsca (np. A→B→C). Takie łańcuchy potrafią spowolnić ładowanie stron i pogorszyć wyniki SEO. System Shopify z założenia pomaga im zapobiegać.
Czy łatwo tworzyć i aktualizować przekierowania URL w Shopify?
Tak, Shopify daje dwie proste metody: tworzenie pojedynczych przekierowań URL w interfejsie oraz import zbiorczy z pliku CSV. Obie metody obsługują względne i bezwzględne ścieżki URL.
Jak tworzyć zbiorcze przekierowania URL w Shopify?
Przekierowania zbiorcze można tworzyć narzędziem importu CSV w Shopify. Zalecamy import w partiach po 1000, bo łatwiej wtedy sprawdzać błędy i całością zarządzać. Szablon do importu jest dostępny tutaj.
Czy Shopify ma maksymalny limit rekordów przekierowań URL?
Tak. Standardowe plany Shopify są ograniczone do 100 000 przekierowań URL, a sklepy Shopify Plus obsłużą do 20 000 000 przekierowań. Te limity są sztywne i nie da się ich podnieść.
Czy Shopify ma limity liczby znaków w przekierowaniach?
Tak, Shopify egzekwuje limit 1024 znaków dla ciągów przekierowań URL, wliczając początkowy ukośnik (/). Dłuższych adresów URL system nie przyjmie.
Czy istnieje narzędzie do sprawdzania zgodności adresów URL z Shopify?
Shopify nie udostępnia oficjalnego narzędzia do walidacji, ale nasze szeroko zakrojone testy pokazały, że 99 procent typowych formatów adresów URL jest obsługiwanych. Główne rzeczy do uwzględnienia to limit 1024 znaków oraz unikanie niezakodowanych średników po znaku równości.