Jak przenieść Shopify do headless bez utraty SEO i URL-i
Zaplanuj migrację Shopify do headless z mapą przekierowań, regułami hurtowymi, walidacją na stagingu, zachowaniem UTM-ów i checklistą dnia premiery.

Dlaczego migracje URL-i z Shopify tak często się wykładają
Przy przejściu z Shopify Liquid na storefront headless zbudowany w Next.js, Hydrogen albo we własnym rozwiązaniu największym ryzykiem nie jest nowy wygląd. Ryzyko siedzi w warstwie URL-i.
Shopify trzyma dość sztywną strukturę:
/products/{handle}/collections/{handle}/pages/{handle}
Nowy storefront headless zwykle wprowadza krótsze albo bardziej elastyczne trasy:
/shop/{handle}/k/{handle}/{handle}
To może być dobre dla nowego sklepu. Jest bardzo złe w dniu premiery, jeśli stare URL-e Shopify dalej żyją w Google, e-mailach, reklamach Meta, linkach afiliacyjnych, kodach QR, artykułach partnerów i zakładkach klientów.
Główne ryzyko migracji
Jeśli nie masz mapy przekierowań, migracja do headless niemal zawsze tworzy trzy problemy:
- 404: Googlebot i klienci trafiają w produkt, kolekcję albo content URL, który już nie istnieje.
- Utrata sygnałów rankingowych: backlinki, linki wewnętrzne i stare wyniki wyszukiwania nie prowadzą już czysto do najlepszego nowego celu.
- Rozpad kampanii: linki z e-maila, paid social, influencerów i afiliacji przestają kierować użytkownika do właściwego produktu albo kategorii.
[!WARNING] Nie czekaj z przekierowaniami do momentu przełączenia DNS. Mapa przekierowań powinna być gotowa, zaimportowana i sprawdzona na stagingu, zanim nowy storefront przejmie ruch produkcyjny.
Krok 1: wyeksportuj stare URL-e z Shopify
Zanim napiszesz reguły, wyeksportuj adresy, które realnie dostają ruch. Zacznij od Shopify, a potem uzupełnij listę o dane SEO i kampanii.
Metoda A: eksport z Shopify Admin
Przejdź do Products > Export i wybierz eksport wszystkich produktów. Otrzymasz CSV z kolumną Handle.
Handle,Title,Variant Price
cool-tshirt,Cool T-Shirt,29.99
blue-jeans,Blue Jeans,49.99Metoda B: analiza sitemap
Jeśli potrzebujesz szerszej listy obejmującej produkty, kolekcje, strony i wpisy blogowe, przeparsuj sitemap.xml.
# Install a sitemap parser
npm install -g sitemap-to-csv
# Fetch and convert
sitemap-to-csv https://sklep.example/sitemap.xml > urls.csvMetoda C: eksport z SEO i analityki
Shopify nie zna wszystkich URL-i, które mają znaczenie. Dociągnij również:
- strony z Google Search Console z kliknięciami i impresjami,
- landing pages z Google Analytics albo z hurtowni danych,
- aktywne URL-e kampanii z UTM-ami,
- linki afiliacyjne i partnerskie,
- URL-e z maili i sekwencji lifecycle.
Takie adresy oznacz w mapie przekierowań jako priorytetowe.
Krok 2: zbuduj mapę przekierowań
Nie każda ścieżka wymaga ręcznej reguły jeden do jednego. Wiele przewidywalnych struktur da się obsłużyć regułami wzorców, a pojedyncze wyjątki zostawić dla produktów wycofanych, scalonych kategorii i najcenniejszych URL-i.
Scenariusz A: prosta zmiana prefiksu
- Stary:
https://sklep.example/products/blue-jeans - Nowy:
https://sklep.example/shop/blue-jeans
Reguła UrlEdge:
- Source:
^/products/(.*)$ - Destination:
/shop/$1 - Type: 301
Scenariusz B: usunięcie prefiksu
- Stary:
https://sklep.example/products/blue-jeans - Nowy:
https://sklep.example/blue-jeans
Reguła UrlEdge:
- Source:
^/products/(.*)$ - Destination:
/$1
[!TIP] Uważaj na produkty wrzucone do root-level URL. Upewnij się, że nowy router nie zacznie kolidować z
/about,/contact,/cartalbo slugami kategorii.
Scenariusz C: zachowanie parametrów kampanii
Linki kampanii żyją miesiącami w newsletterach, SMS-ach, reklamach, postach twórców i na stronach partnerów.
https://sklep.example/products/blue-jeans?utm_source=newsletter&utm_campaign=wiosnapowinno wylądować jako:
https://sklep.example/shop/blue-jeans?utm_source=newsletter&utm_campaign=wiosnaJeśli przekierowanie zgubi query string, migracja może wyglądać dobrze w crawl toolu, a po cichu rozwalić atrybucję kampanii.
Krok 3: obsłuż przekierowania na edge
Możesz robić przekierowania wewnątrz aplikacji headless, ale wtedy logika migracyjna jest na stałe związana z frontendem. Przy dużych mapach przekierowań czytelniejsze i łatwiejsze w utrzymaniu jest oddzielenie ruchu do dedykowanej warstwy edge.

Problem z opóźnieniem
Jeśli przekierowania trzymasz w next.config.js albo w Middleware, żądanie musi dojść do originu, uruchomić compute i dopiero wtedy wrócić z odpowiedzią.
| Metoda | Opóźnienie (p95) | Infrastruktura |
|---|---|---|
| Shopify Native | 120 ms | Shopify Core |
| Next.js Middleware | 300 ms+ | Serverless i cold starty |
| UrlEdge | 25 ms | Globalna sieć edge |
Konfiguracja
W UrlEdge możesz zaimportować CSV albo ustawić regexy bezpośrednio.
{
"rules": [
{
"source": "^/products/(.*)",
"destination": "/shop/$1",
"type": 301
},
{
"source": "^/pages/contact-us",
"destination": "/contact",
"type": 301
}
]
}Krok 4: walidacja przed cutoverem
Zanim przełączysz DNS, sprawdź starą listę URL-i przeciwko nowej warstwie przekierowań.
- Hostname stagingowy: podłącz staging do UrlEdge i testuj najpierw URL-e o najwyższej wartości.
- Test curl:
curl -I https://staging.sklep.example/products/stary-produkt
# Expected Output:
# HTTP/2 301
# location: /shop/stary-produkt
# x-urledge-rule: regex-product-match- Test crawlerem: użyj Screaming Froga albo podobnego narzędzia, żeby przepuścić listę starych URL-i przez środowisko stagingowe.
- Test kampanii: sprawdź próbkę URL-i z
utm_source,utm_medium,utm_campaign, kuponami i identyfikatorami afiliacyjnymi. - Review wyjątków: zadbaj, aby wycofane produkty kierowały na najlepszą kategorię, zastępczy produkt albo support page, a nie zawsze na homepage.
Wniosek
Migracja Shopify do headless ma w praktyce dwie premiery naraz: nowy storefront i warstwę przekierowań, która ma utrzymać przy życiu cały stary ruch.
Traktuj mapę przekierowań jak infrastrukturę dnia startu, a nie jak zadanie „na koniec”.
Przeniesienie logiki przekierowań na edge pomaga:
- utrzymać duże mapy poza kodem frontendu,
- sprawdzić reguły jeszcze przed cutoverem DNS,
- zachować ścieżki produktów, kolekcji i kampanii,
- poprawiać wyjątki bez redeployu storefrontu.
Jeśli chcesz zacząć od samej warstwy migracyjnej, użyj Bulk URL Management i przygotuj pierwszą paczkę przekierowań jeszcze przed dniem launchu.
Chcesz lepiej uporządkować swoje przekierowania?
Zacznij korzystać z UrlEdge i zarządzaj ruchem na edge.
ZacznijPowiązane artykuły
Zobacz wszystko
Alternatywa dla Firebase Dynamic Links po wyłączeniu usługi
Firebase podaje, że Dynamic Links zostało wyłączone 25 sierpnia 2025. Zobacz, jak zastąpić je smart linkami, app links i lepiej kontrolowaną ścieżką zapasową.

301 vs 302 vs 307 vs 308: które przekierowanie wybrać?
301 i 308 nadają się do zmian trwałych, a 302 i 307 do tymczasowych. Kluczowe pytanie brzmi: czy metoda HTTP musi pozostać bez zmian?