WordPress → Next.js — migracja treści, redirecty 301 i zachowanie pozycji SEO
Jak przenieść stronę z WordPress na Next.js bez utraty pozycji w Google? Eksport treści, mapowanie URL, redirecty 301, migracja obrazów i weryfikacja indeksacji.
Dlaczego migracja z WordPress jest ryzykowna dla SEO
Podstawową kwestią są i będą URL-e, które Google zaindeksował, przypisał im autorytet i rankuje je na konkretne frazy. Bez ich odpowiedniego zabezpieczenia, zmiana platformy może oznaczać całkowicie utracone pozycje (Google widzi nowe URL-e jako nowe strony), błędy 404 (stare URL-e przestają działać), utratę backlinków (linki zewnętrzne prowadzą donikąd) i spadek ruchu organicznego na tygodnie lub miesiące.
To praktycznie rzecz biorąc coś na kształt trzęsienia ziemi, które niemal doszczętnie burzy Twoją stronę internetową, nawet jeśli od strony technicznej będzie "normalnie" funkcjonować. Odpowiedni plan i przeprowadzenie migracji jest kluczem do sukcesu Twojej strony.
Plan migracji — 7 kroków
Krok 1: Inwentaryzacja tego co aktualnie masz w WordPress
Przed migracją zrób pełną, dokładną listę zaindeksowanych stron:
Code
# Pobierz wszystkie zaindeksowane URL-e z Google Search Console# GSC → Performance → Pages → Eksportuj do CSV# Lub użyj screaming frog / sitemapcurl -s https://twoj-wordpress.pl/sitemap_index.xml
Następnie musisz stwórzyć nowy arkusz z wymienionymi kolumnami: stary URL, nowy URL, status (migruj/redirect/usuń) oraz priorytet (ruch organiczny).
Krok 2: Eksport treści z WordPress
Code
# WP-CLI — eksport do JSON (najlepsze do programowej migracji)wp post list --post_type=post --format=json --fields=ID,post_title,post_name,post_content,post_date,post_excerpt > posts.jsonwp post list --post_type=page --format=json --fields=ID,post_title,post_name,post_content > pages.json# Eksport mediówwp media list --format=json --fields=ID,guid,post_title,alt_text > media.json
Alternatywnie: WordPress REST API:
Code
// scripts/export-wordpress.tsasync function exportPosts() { let page = 1 let allPosts: any[] = [] while (true) { const res = await fetch( `https://twoj-wordpress.pl/wp-json/wp/v2/posts?per_page=100&page=${page}&_embed`, ) if (!res.ok) break const posts = await res.json() if (posts.length === 0) break allPosts = [...allPosts, ...posts] page++ } // Zapisz do pliku const fs = require('fs') fs.writeFileSync('wordpress-posts.json', JSON.stringify(allPosts, null, 2)) console.log(`Wyeksportowano ${allPosts.length} postów`)}
Krok 3: Konwersja treści na MDX (lub import do CMS)
Kluczowym zadaniem jest zapewnienie, że każdy stary URL ma swój odpowiednik w nowej witrynie. Jeśli to możliwe, zachowaj strukturę URL. Jeśli zmiana jest nieunikniona, musisz skonfigurować przekierowania 301 (permanent redirect) ze starych adresów na nowe.
Spadek ruchu o 10–20% w pierwszym tygodniu jest normalny, ponieważ Google musi wszystko przeindeksować. Sytuacja powinna się poprawiać w przeciągu kolejnych 2–6 tygodni.
Podsumowanie
Migracja WordPress → Next.js wymaga odpowiedniego planowania SEO, czyli jak pisałem: eksport treści, mapowanie URL-i, redirecty 301, migracja obrazów i monitoring indeksacji. Kluczową sprawą jest, by żaden stary URL nie zwrócał błędu 404 — każdy URL musi mieć redirect lub swój odpowiednik.
Podstawowym narzędziem monitorującym proces migracji jest Google Search Console - to Twoje oczy po migracji. Musisz monitorować indeksację, wszelkie pojawiające się błędy oraz ruch na stronie. W tego typu sprawach, zainwestowany w migrację czas, zwraca się w dłuższej perspektywie.
Najczęściej zadawane pytania
Jak długo trwa spadek ruchu po migracji?
Z redirectami (i tymi samymi URL) spadek o 5–15% to czas, w którym algorytm sprawdza, czy nowy kod (Next.js) renderuje tę samą treść i czy jest stabilny. Trwa to zazwyczaj 2–4 tygodnie. Bez redirectów to "trzęsienie ziemi" i tracisz 50–80% ruchu, ponieważ Google uznaje, że stara treść zniknęła, a nowa nie ma żadnej historii.
Czy muszę migrować komentarze?
Raczej sugerowałbym ich eksport, ponieważ są naturalną formą wyrazu obecności użytkowników na Twojej stronie internetowej. Więc można powiedzieć, że jakąś wartość SEO zawsze mają, chyba że wyglądają jak spam.
Czy mogę utrzymać WordPress jako CMS i przenieść frontend?
Tak, jest to podejście headless. WordPress zostaje jako CMS (zarządzanie treścią), a Next.js przejmuje frontend i w ten sposób, nie musimy robić migracji treści czy zmieniać struktur workflow redakcyjnego.
Pracuję z tym zawodowo.
Jeśli chcesz dobrze zrozumieć, jak połączyć SEO, analitykę i warstwę techniczną strony bez zgadywania i półśrodków, skontaktuj się ze mną. Pomagam przekładać wiedzę z takich wpisów na sensowny setup wdrożeniowy.
Maciej Sala — project manager i frontendowiec z doświadczeniem w marketingu internetowym. Na co dzień pracuję z Reactem, Next.js i TypeScriptem, łącząc perspektywę produktową z praktycznym podejściem do kodu. Przez kilka lat związany z branżą gier wideo jako project manager i game designer.
Absolwent historii na Uniwersytecie Jagiellońskim i studiów podyplomowych z marketingu internetowego na Akademii Górniczo-Hutniczej w Krakowie. Poza pracą trenuje na siłowni, maluje figurki i realizuje własne projekty.
Google Search Console + Next.js — indeksacja, błędy, performance i co z nimi robić
Jak korzystać z Google Search Console dla strony Next.js? Weryfikacja, sitemap, indeksacja, Core Web Vitals, crawl budget i najczęstsze problemy — praktyczny poradnik.
Sanity CMS + Next.js — od instalacji po live preview i Visual Editing
Jak zintegrować Sanity CMS z Next.js App Router? Schema, GROQ queries, ISR, live preview, Visual Editing i deploy — kompletny setup headless CMS dla strony usługowej.
Hreflang i canonical w Next.js — SEO wielojęzycznych stron bez duplikacji
Jak poprawnie ustawić hreflang i canonical w Next.js App Router? Unikanie duplikacji treści, konfiguracja metadata API, wielojęzyczna sitemap i typowe błędy SEO.