Po przebudowie strony pozycje w Google tracą najczęściej adresy, których nikt nie wpisał do mapy przekierowań: stary wpis na blogu, do którego od lat linkuje portal branżowy, PDF z cennikiem, podstrona oferty z parametrem w adresie. Migracja strony bez utraty pozycji to przede wszystkim praca na liście adresów. Konfiguracja serwera jest na końcu i zajmuje najmniej czasu.
Trzeba też uczciwie powiedzieć, czego się spodziewać. Google w przewodniku po przenoszeniu witryn pisze, że widoczność w wynikach może się w trakcie przeprowadzki chwilowo wahać i że to normalne, a przy średniej wielkości stronie pokazanie nowych adresów zamiast starych może zająć kilka tygodni lub dłużej. Dobra migracja nie eliminuje tego okresu, ale usuwa przyczyny, przez które strona po nim zostaje niżej na stałe.
"Migracja" obejmuje bardzo różne zmiany, a od rodzaju zależy, ile pracy wymaga po stronie SEO. Rozstrzyga jedno pytanie: czy adresy widoczne dla użytkownika się zmieniają. Jeśli nie, dla Google zmienia się niewiele. Jeśli tak, każdy stary adres potrzebuje przekierowania.
| Zmiana | Czy adresy się zmieniają | Co jest potrzebne |
|---|---|---|
| Nowy hosting albo CDN | Nie | Obniżony TTL w DNS przed przenosinami, stary serwer włączony do czasu, aż przestanie dostawać ruch |
| Przejście z HTTP na HTTPS | Tak, zmienia się protokół | Przekierowania 301 z każdego adresu http na odpowiednik https, bez narzędzia zmiany adresu |
| Nowa struktura adresów w tej samej domenie | Tak | Pełna mapa przekierowań, nowe linki wewnętrzne, nowa mapa strony |
| Zmiana domeny | Tak | Mapa przekierowań, narzędzie zmiany adresu w Search Console, prośby o aktualizację linków |
| Nowy CMS albo przebudowa strony | Zwykle tak, bo każdy system buduje adresy po swojemu | Jak przy nowej strukturze adresów, plus sprawdzenie treści i szablonów |
| Połączenie kilku stron w jedną | Tak | Mapa przekierowań z każdej domeny i decyzja, które treści zostają |
Sama zmiana hostingu jest najprostsza. Google w opisie przenosin infrastruktury radzi obniżyć TTL rekordów DNS do kilku godzin co najmniej tydzień wcześniej, a stary serwer wyłączyć dopiero wtedy, gdy w jego logach ruch spadnie do zera. Uprzedza też, że tuż po przenosinach Googlebot zwykle chwilowo zwalnia pobieranie, a w kolejnych dniach je zwiększa, czasem powyżej poprzedniego poziomu.
Przy każdej pozostałej zmianie liczą się adresy. Linki i sygnały, które strona zebrała przez lata, są przypięte do konkretnych adresów. Przekierowanie 301 mówi wyszukiwarce, że nowy adres przejmuje rolę starego. Bez przekierowania stary adres przestaje istnieć, a nowy startuje od zera.
Google radzi w przewodniku po migracjach, żeby zmiany planować jedna po drugiej, a nie wszystkie naraz. Jako przykład podaje dokładnie ten zestaw, który zdarza się najczęściej: nowa domena, nowy CMS i nowy układ strony. Każdą z tych zmian lepiej zrobić osobno.
Powód jest praktyczny. Jeśli po migracji ruch spadnie, a w tym samym tygodniu zmieniła się domena, struktura adresów, treść i szablon, nie da się ustalić, co zawiodło, bo każda z tych zmian mogła spowodować spadek sama. Przy zmianach rozłożonych w czasie każdy okres mówi tylko o jednej z nich.
Nie zawsze da się to zrobić podręcznikowo. Firma, która zmienia nazwę, chce mieć nową domenę i nowy wygląd w jednym dniu. Wtedy ryzyko ogranicza się na trzy sposoby:
/uslugi/strony-www zostaje /uslugi/strony-www, tylko na innej domenie, mapa przekierowań sprowadza się do jednej reguły, a ryzyko pomyłki w mapowaniu spada do minimum.Mapa przekierowań jest tak dobra jak lista starych adresów, z której powstaje. Najczęstszy błąd to zbudowanie jej z menu albo z mapy starej strony, które pokazują stan zaplanowany, a nie adresy, które przez lata zebrały linki i ruch.
Google w przewodniku wymienia kilka źródeł listy starych adresów: mapy strony, logi serwera, analitykę, raport linków w Search Console i system zarządzania treścią. Każde z nich wyłapuje coś innego:
| Źródło | Co wyłapuje | Czego nie widzi |
|---|---|---|
| Mapa strony XML | Adresy, które system uważa za aktualne | Stare adresy, pliki, strony usunięte z menu |
| Skan obecnej strony crawlerem | Wszystko, do czego prowadzą linki wewnętrzne, także pliki i obrazy | Strony, do których nic już nie linkuje |
| Search Console, raport skuteczności, zakładka Strony | Adresy, które mają wyświetlenia i kliknięcia w Google | Adresy bez ruchu z wyszukiwarki |
| Search Console, raport Linki | Strony najczęściej linkowane z zewnątrz | Adresy bez linków zewnętrznych |
| Analityka, strony docelowe | Wejścia z kampanii, newsletterów, mediów społecznościowych | Ruch sprzed okresu, za który masz dane |
| Logi serwera z ostatnich miesięcy | Każdy adres, o który ktoś pytał, także Googlebot i stare zakładki | Adresy, o które nikt ostatnio nie pytał |
| Baza danych CMS-a | Wszystkie opublikowane treści, także ukryte | Adresy spoza CMS-a, na przykład pliki wgrane ręcznie |
Przy eksporcie z Search Console uważaj na limit. Eksport bezpośrednio z raportu jest obcięty do 1000 wierszy. Przy większej stronie więcej wierszy dostaniesz przez API Search Console. Przy okazji wyeksportuj dane z raportu skuteczności za możliwie długi okres. Po migracji będą punktem odniesienia do porównań.
Dopisz do listy rzeczy, których nie widać w żadnym raporcie, bo żyją poza stroną: adresy wydrukowane na ulotkach i w kodach QR, linki w stopkach maili, w szablonach ofert, w profilach firmy w katalogach i w aktywnych kampaniach reklamowych. Google przypomina też o zasobach osadzonych: obrazach, plikach wideo, PDF-ach, a nawet plikach JavaScript i CSS. Obrazy z dobrą pozycją w wyszukiwarce grafiki tracą ją tak samo jak podstrony.
Na końcu połącz źródła w jedną listę bez duplikatów i przy każdym adresie zapisz liczbę wejść z Google i linków z zewnątrz. Te dwie kolumny wyznaczają kolejność pracy: adresy z ruchem i linkami mapujesz ręcznie, a długi ogon bez ruchu obsługujesz regułami.
Mapa przekierowań to arkusz, w którym każdy wiersz łączy stary adres z nowym. Arkusz jest ważniejszy od konfiguracji serwera: to na nim pracują osoby, które znają treść, a serwer dostaje z niego gotowy plik.
| Stary adres | Nowy adres | Decyzja |
|---|---|---|
| /o-nas.html | /o-firmie | 301, ta sama treść |
| /oferta.php?id=3 | /uslugi/strony-www | 301, ta sama usługa pod nowym adresem |
| /aktualnosci/12-nowa-strona.html | /blog/nowa-strona | 301, regułą dla całej sekcji |
| /realizacje/sklep-meblowy.html | /realizacje/sklep-meblowy | 301, ta sama realizacja |
| /promocja-wiosna-2019.html | brak | 410, treść usunięta bez odpowiednika |
W prawdziwym arkuszu przydają się jeszcze kolumny z liczbą wejść, liczbą linków zewnętrznych i nazwiskiem osoby, która zatwierdziła dane mapowanie. Przy mapowaniu obowiązuje kilka zasad:
/Kontakt.html i /kontakt.html mogły działać obie, a parametry kampanii, takie jak ?utm_source=, nie powinny psuć dopasowania.Dla Google adresy 404 i 410 są traktowane tak samo: oba mówią, że treści nie ma. 410 ma tę zaletę, że w logach i w kodzie od razu widać, że usunięcie było zamierzone, a nie jest błędem w mapie.
Google rozróżnia przekierowania stałe i tymczasowe, i ta różnica ma przy migracji znaczenie:
| Rodzaj | Jak traktuje go Google | Kiedy używać |
|---|---|---|
| 301 i 308 po stronie serwera | Stałe: silny sygnał, że nowy adres ma zastąpić stary w wynikach | Każda migracja |
| 302, 303 i 307 | Tymczasowe: w wynikach zostaje stary adres | Krótkie przerwy, na przykład czasowo niedostępna strona |
| Meta refresh z zerowym opóźnieniem | Stałe | Gdy nie masz dostępu do konfiguracji serwera |
| Przekierowanie w JavaScripcie | Stałe, ale Google zaleca je tylko w ostateczności | Gdy nie da się użyć żadnej z powyższych metod |
Googlebot podąża za łańcuchem do 10 przekierowań, ale Google zaleca kierowanie od razu na adres końcowy. Każdy dodatkowy krok to dodatkowe żądanie, wolniejsze wejście dla użytkownika i kolejne miejsce, w którym coś może się zepsuć.
Przy setkach adresów reguły w konfiguracji serwera powinny wczytywać się z pliku wygenerowanego z arkusza, a nie być pisane ręcznie. W nginx służy do tego dyrektywa map. Poniższa konfiguracja obsługuje zmianę domeny z example.com na example.net połączoną ze zmianą części adresów:
Kilka szczegółów, które sprawdziliśmy na tej konfiguracji, zanim trafiła do tekstu:
$uri zamiast $request_uri. $uri nie zawiera parametrów, więc /o-nas.html?utm_source=newsletter trafia w ten sam wpis co /o-nas.html, a $is_args$args przenosi parametry na nowy adres. Z kluczami po $request_uri taki adres nie pasuje do niczego.map są porównywane bez rozróżniania wielkości liter, więc /O-NAS.html też trafia we właściwy wpis.~ obsługuje całą sekcję jedną regułą, a przechwycona część adresu trafia w miejsce $1./oferta.php?id=3, osobna mapa po $arg_id przekierowuje każdą ofertę, a nieznane identyfikatory dostają 404.location /. Adresy spoza mapy trafiają na tę samą ścieżkę w nowej domenie. Jeśli takiej ścieżki tam nie ma, użytkownik zobaczy 404, co jest uczciwsze niż strona główna.Przy bardzo długich adresach nginx może przy starcie zgłosić konieczność zwiększenia map_hash_bucket_size. To zwykłe ustawienie rozmiaru tablicy, a nie błąd w mapie.
Jak długo trzymać przekierowania? Google pisze: tak długo, jak to możliwe, zwykle co najmniej rok. Rok to minimum, które pozwala wyszukiwarce przenieść sygnały i ponownie pobrać treść. Linki z cudzych stron, zakładki i wydrukowane materiały nie znikną po roku, więc w praktyce przekierowania zostawia się na stałe, a starą domenę opłaca tak długo, jak ktoś z niej przychodzi.
Google w przewodniku radzi przetestować przekierowania narzędziem do sprawdzania adresów URL dla pojedynczych adresów, a dla większej liczby skryptem. Poniższy skrypt czyta mapę z pliku CSV wyeksportowanego z arkusza i dla każdego wiersza sprawdza trzy rzeczy: czy stary adres zwraca 301 albo 308, czy prowadzi dokładnie tam, gdzie powinien, i czy adres docelowy odpowiada 200 bez kolejnych przekierowań.
Skrypt wymaga tylko bash i curl. Linia z \r usuwa znak końca wiersza, który zostawia plik CSV zapisany w Excelu. Na mapie z błędami wynik wygląda tak:
Każdy z tych trzech błędów jest typowy. Pierwszy to przekierowanie tymczasowe, które bywa domyślnym wyborem we wtyczkach i panelach hostingu. Drugi to stare przekierowanie, które teraz prowadzi na adres przekierowujący dalej. Trzeci to wiersz, w którym ktoś na szybko wpisał stronę główną.
Skrypt da się uruchomić przed zmianą DNS: wystarczy na komputerze testującym dopisać do pliku /etc/hosts adres IP nowego serwera dla obu domen. Ten sam skrypt uruchamiasz po przełączeniu, już na produkcji, i po każdej zmianie konfiguracji serwera. Kod wyjścia różny od zera pozwala podpiąć go pod automatyczne sprawdzanie przy wdrożeniu.
Przekierowania obsługują ludzi i roboty, które przychodzą ze starymi adresami. Nowa strona musi jeszcze sama mówić spójnie, które adresy są właściwe. Lista z przewodnika Google jest krótka:
noindex i każda reguła w robots.txt potrzebna tylko na czas przenosin musi zostać zdjęta. Pozostałe punkty z dnia startu opisuje nasza lista kontrolna SEO technicznego przed startem strony.Przy migracji na nową domenę sprawdź jeszcze, czy domena nie ma przeszłości. Google zaleca, żeby przy kupionej domenie sprawdzić w Search Console, czy nie ciążą na niej ręczne działania albo prośby o usunięcie adresów złożone przez poprzedniego właściciela.
Przy przenosinach na inną domenę albo subdomenę Search Console ma narzędzie zmiany adresu. Informuje ono Google o przeprowadzce i przez 180 dni od jej rozpoczęcia przekazuje sygnały ze starej witryny do nowej, preferując nową przy wyborze stron kanonicznych. Po tym czasie Google traktuje obie witryny jako niezwiązane.
Warunki użycia są konkretne:
www i bez oraz dla subdomen. Google dopisał to wyraźnie do przewodnika w czerwcu 2026 roku, z uwagą, że migracje domen działają najlepiej, gdy przeniesione są wszystkie warianty.Narzędzie nie służy do przejścia z HTTP na HTTPS, do zmiany między wersją z www i bez w tej samej domenie ani do przenoszenia podstron w obrębie jednej witryny. W tych przypadkach wystarczą przekierowania i canonical.
Poza Search Console zostaje praca ręczna: prośby o aktualizację odnośników do stron z raportu Linki, zaczynając od tych, które dają najwięcej ruchu, oraz nowe adresy w profilach firmy, podpisach maili, szablonach dokumentów i kampaniach reklamowych.
Gdy mapa jest przetestowana, a nowa strona gotowa, w dniu przełączenia liczy się kolejność, bo część kroków zależy od poprzednich:
eksport z raportu skuteczności Search Console, analityki i pełna kopia zapasowa starej strony z bazą danych.
nowa strona działa pod docelowym adresem, bez blokad ze stagingu.
konfiguracja z mapą przekierowań wgrana na serwer obsługujący stare adresy.
skrypt z poprzedniej sekcji przechodzi bez błędów dla całej listy.
usługa zweryfikowana, nowa mapa strony zgłoszona, najważniejsze adresy sprawdzone narzędziem do sprawdzania adresów URL.
przy zmianie domeny narzędzie zmiany adresu uruchomione dla każdego wariantu starej domeny.
prośby o aktualizację linków wysłane, kampanie reklamowe przestawione na nowe adresy.
sprawdzenie, czy wejścia na nowej stronie są zliczane, zanim pojawi się pytanie, gdzie zniknął ruch.
Przełączenie planuj na porę, w której zespół jest dostępny przez kolejne godziny, a nie na piątkowy wieczór. Błąd w mapie naprawia się w kilka minut, pod warunkiem że ktoś go zauważy.
Po przełączeniu Google stopniowo zamienia stare adresy na nowe i opisuje, czego się spodziewać: liczba zindeksowanych adresów ze starej mapy strony spada, z nowej rośnie, ruch na starej witrynie maleje, a na nowej przybywa. Monitoring polega na sprawdzaniu, czy dzieje się dokładnie to, i na szybkim wyłapaniu adresów, które wypadły z tego schematu.
| Kiedy | Co sprawdzać | Gdzie |
|---|---|---|
| Dzień przełączenia i następny | Odpowiedzi 404 i 5xx na nowej stronie, stare adresy bez przekierowania, zliczanie wejść | Logi serwera, skrypt testujący mapę, analityka w czasie rzeczywistym |
| Pierwszy tydzień | Czy Googlebot pobiera nowe adresy i czy serwer daje radę | Logi serwera, raport Statystyki indeksowania w ustawieniach Search Console |
| Tygodnie 2-8 | Przechodzenie adresów do indeksu, zapytania i kliknięcia w porównaniu z okresem przed migracją | Raport Indeksowanie stron i raport skuteczności z porównaniem okresów |
| Miesiące 2-6 | Czy ruch wrócił do poziomu sprzed migracji, czy stara domena wciąż dostaje wejścia | Raport skuteczności, logi starej domeny |
W logach serwera szukaj adresów, które zwracają 404 i o które pytają ludzie albo Googlebot. Każdy taki adres to brakujący wiersz w mapie. Dopiero prawdziwy ruch pokazuje, co jeszcze było linkowane, więc dopisuj je do arkusza, generuj plik od nowa i puszczaj test.
Przy porównaniach okresów w raporcie skuteczności porównuj tygodnie do tygodni z tymi samymi dniami tygodnia, a przy stronach sezonowych także z tym samym okresem rok wcześniej. Spadek w sierpniu w porównaniu z marcem może nie mieć nic wspólnego z migracją. Ogólny monitoring nowej strony po wdrożeniu, poza SEO, opisaliśmy osobno we wpisie o tym, co obserwować po wdrożeniu.
Chwilowy spadek jest wpisany w migrację. Google pisze, że widoczność może się wahać i z czasem się ustabilizuje. Problem zaczyna się wtedy, gdy spadek dotyczy konkretnych stron, a nie całej witryny, albo gdy po kilku tygodniach nie widać żadnego odbicia. Wtedy objaw zwykle wskazuje przyczynę:
| Objaw | Prawdopodobna przyczyna | Co sprawdzić |
|---|---|---|
| Spadek dotyczy kilku konkretnych stron | Brakujące albo błędne wiersze w mapie | Stare adresy tych stron w skrypcie testującym |
| Stare adresy wciąż w wynikach po wielu tygodniach | Przekierowania tymczasowe 302 albo stare adresy w mapie strony | Kody odpowiedzi, zawartość zgłoszonej mapy strony |
| Nowe adresy oznaczone jako duplikaty | Canonical wskazuje stare adresy albo domenę stagingu | Znacznik canonical w kodzie nowych podstron |
| Dużo pozornych błędów 404 | Wiele adresów przekierowanych na stronę główną albo listę | Mapa przekierowań, wiersze z celem ogólnym |
| Nowa strona w ogóle nie pojawia się w wynikach | Noindex albo blokada w robots.txt przeniesione ze stagingu | Nagłówki i znaczniki meta na produkcji |
| Pozycje spadły mimo poprawnych przekierowań | Zmieniona treść, tytuły albo struktura nagłówków | Porównanie treści starej i nowej wersji najważniejszych podstron |
Ostatni wiersz jest najtrudniejszy, bo przekierowania nie mają z nim nic wspólnego. Jeśli przy przebudowie skrócono teksty, usunięto sekcje odpowiadające na pytania klientów albo zmieniono tytuły, nowa strona może być mniej trafna na zapytania, na które stara była widoczna. Przy treści przeniesionej bez zmian tę przyczynę wykluczasz od razu.
Google pisze, że tak długo, jak to możliwe, zwykle co najmniej rok. W praktyce przekierowania zostawia się na stałe, bo linki z innych stron, zakładki i wydrukowane materiały nie przestają działać po roku. Przy zmianie domeny oznacza to także dalsze opłacanie starej domeny.
Przekierowanie stałe jest dla Google silnym sygnałem, że nowy adres ma zastąpić stary w wynikach. Pozycje zależą jednak także od treści. Jeśli pod nowym adresem jest ta sama treść, nowy adres przejmuje rolę starego. Jeśli treść się zmieniła, pozycje zależą od tego, jak nowa wersja odpowiada na te same zapytania.
Sama zmiana hostingu, przy której adresy się nie zmieniają, nie wymaga przekierowań ani narzędzia zmiany adresu. Google uprzedza, że Googlebot tuż po przenosinach może chwilowo pobierać stronę wolniej, a w kolejnych dniach szybciej niż wcześniej. Znaczenie ma za to, czy nowy serwer odpowiada bez błędów: przy błędach 5xx Google zwalnia pobieranie, a gdy trwają dłużej, strony mogą wypadać z indeksu.
Można technicznie, ale Google to odradza, a przekierowanie na stronę główną zamiast odpowiedzi 404 nazywa pozornym błędem 404. Adres bez odpowiednika powinien zwracać 404 albo 410, a adres z odpowiednikiem prowadzić właśnie do niego.
Google podaje, że przy średniej wielkości stronie zastąpienie starych adresów nowymi w wynikach może zająć kilka tygodni lub dłużej, a przy dużych stronach jeszcze dłużej. Jeśli po dwóch, trzech miesiącach ruch dalej jest wyraźnie niższy, a przekierowania działają poprawnie, przyczyny szukaj w zmianach treści, a nie w konfiguracji.
Migracja to osobna pozycja w zakresie nowej strony, a nie dodatek "na koniec". Lista adresów, mapa przekierowań, testy i monitoring zajmują czas, a jeśli wycena o nich milczy, nikt nie ma ich w planie. We wpisie o tym, jak czytać wycenę software house'u, pisaliśmy, że rzeczy niewymienione w zakresie wychodzą zwykle w środku projektu. Przy przebudowie strony z ruchem z Google migracja jest pierwszą z nich.
Budujemy strony od 2020 roku, a po oddaniu projektu dostajesz pełne prawa do kodu i dokumentację, więc mapa przekierowań i konfiguracja zostają u Ciebie, a nie u wykonawcy. Jak wygląda współpraca od pierwszej wiadomości do startu, opisujemy na stronie Jak pracujemy, a zakres usług jest w ofercie. Jeśli planujesz przebudowę albo zmianę domeny, napisz do nas z adresem obecnej strony.