Mapa przekierowań 301 to najczęściej zwykły arkusz z dwiema kolumnami: stary adres i nowy adres. Przy kilkudziesięciu wierszach to wystarcza. Przy kilku tysiącach taka lista prawie zawsze zawiera duplikaty, łańcuchy, pętle i adresy docelowe, które zwracają 404. Poniższy szablon mapy przekierowań rozwiązuje ten problem prostą zasadą: każdy błąd, który da się wykryć formułą, ma zostać wykryty w arkuszu, a nie na produkcji.
Szablon sprawdza się zarówno przy zmianie struktury URL, jak i przy pełnej przeprowadzce, na przykład opisanej w naszej checkliście migracji sklepu na nową platformę. Formuły poniżej podajemy w składni Arkuszy Google z polskimi ustawieniami regionalnymi (średnik jako separator argumentów); w Excelu działają identycznie po zmianie nazw funkcji na polskie odpowiedniki lub przy angielskiej wersji programu.
Jakie kolumny musi mieć arkusz
Minimalny zestaw to osiem kolumn. Każda ma jedno zadanie i nie powinna być używana do niczego innego.
| Kolumna | Nazwa | Zawartość |
|---|---|---|
| A | stary_url | Ścieżka źródłowa, znormalizowana (bez domeny, małe litery, bez parametrów śledzących) |
| B | źródło_danych | Skąd pochodzi adres: crawl, sitemap, Search Console, logi serwera, linki zewnętrzne |
| C | nowy_url | Ścieżka docelowa w tej samej, znormalizowanej postaci |
| D | typ | 301, 410 albo „bez zmian” |
| E | ruch_90d | Kliknięcia lub sesje z ostatnich 90 dni, do priorytetyzacji |
| F | walidacja | Wynik formuł kontrolnych (opis niżej) |
| G | status_http | Kod odpowiedzi adresu docelowego, sprawdzony crawlerem |
| H | decyzja | Zatwierdzone, do poprawy, odrzucone; plus inicjały osoby |
Kolumna B wygląda na zbędną, dopóki ktoś nie zapyta, dlaczego w mapie jest adres, którego nikt nie pamięta. Odpowiedź „bo był w logach z 2023 roku” zamyka dyskusję. Kolumna E pozwala z kolei posortować arkusz tak, żeby ręcznie sprawdzić najpierw te 5–10% adresów, które przynoszą większość ruchu.
Formuły wykrywające duplikaty i pętle
Normalizacja jest warunkiem wstępnym. Jeśli w kolumnie A raz pojawia się /Buty/, a raz /buty, żadna formuła nie uzna ich za duplikat. Dlatego warto dodać kolumnę pomocniczą z formułą =LOWER(TRIM(A2)) i usuwać końcowy ukośnik jednolicie dla całego zbioru, zgodnie z konwencją nowej witryny.
Cztery formuły pokrywają większość błędów:
- Duplikat źródła:
=COUNTIF($A:$A;A2)>1. Ten sam stary adres skierowany w dwa miejsca oznacza, że serwer wykona tylko jedną regułę, a nie wiadomo którą. - Przekierowanie na siebie:
=A2=C2. Prawie zawsze efekt kopiowania wierszy. - Łańcuch:
=ISNUMBER(MATCH(C2;$A:$A;0)). Jeśli adres docelowy sam jest źródłem innego przekierowania, powstaje łańcuch A→B→C. Należy go spłaszczyć, wpisując od razu C jako cel. - Pętla dwuelementowa:
=IFERROR(INDEX($C:$C;MATCH(C2;$A:$A;0))=A2;FALSE). Wynik PRAWDA oznacza, że A prowadzi do B, a B z powrotem do A.
Dłuższe pętle (A→B→C→A) wyłapie dopiero spłaszczanie łańcuchów: po każdej iteracji formuła łańcucha powinna zwracać FAŁSZ we wszystkich wierszach. Jeśli po trzech iteracjach wciąż zwraca PRAWDA, w danych jest cykl. Wyniki zbiera kolumna F, np. formułą łączącą testy w krótki kod: „DUP”, „SELF”, „CHAIN”, „LOOP” albo „OK”.
Kolumna statusu i kolumna decyzji
Najczęstszy błąd organizacyjny to mieszanie tego, co arkusz wie, z tym, co ktoś postanowił. Kolumny F i G są wyliczane automatycznie lub wklejane z crawlera i nikt ich ręcznie nie poprawia. Kolumna H jest jedynym miejscem na ludzką decyzję.
Dzięki temu filtr „F różne od OK albo G różne od 200, a H równe Zatwierdzone” od razu pokazuje wiersze, które ktoś zaakceptował mimo błędu. Takich pozycji nie powinno być wcale, a jeśli są, każda wymaga komentarza z uzasadnieniem.
Walidacja adresów docelowych przed wdrożeniem
Formuły sprawdzają spójność samej listy, ale nie wiedzą, czy nowa strona istnieje. Do tego potrzebny jest crawl listy adresów docelowych na środowisku testowym lub na nowej domenie przed przełączeniem. Każdy adres z kolumny C powinien zwrócić 200, nie mieć tagu noindex i mieć kanoniczny URL wskazujący na samego siebie.
Osobna kontrola dotyczy sensu przekierowania. Google w dokumentacji o przenoszeniu witryny ze zmianą adresów URL zaleca kierowanie każdego starego adresu na najbardziej odpowiadający mu nowy odpowiednik. Masowe przekierowanie setek produktów na stronę główną lub na jedną kategorię jest traktowane jak soft 404. W arkuszu łatwo to wykryć: =COUNTIF($C:$C;C2) większe niż 20 to sygnał, że w tym miejscu ktoś poszedł na skróty.
Procedura testu na próbce
Przed wdrożeniem całej mapy warto przetestować próbkę na serwerze testowym z wgranymi regułami. Sprawdzona procedura wygląda tak:
- Wybierz 100 adresów: 50 z największym ruchem, 30 losowych i 20 nietypowych (z parametrami, polskimi znakami, wielkimi literami, końcowym ukośnikiem i bez niego).
- Przepuść listę starych adresów przez crawler w trybie listy z włączonym śledzeniem przekierowań.
- Porównaj adres końcowy z kolumną C. Każda różnica oznacza błąd w regule albo w arkuszu.
- Sprawdź liczbę przeskoków. Więcej niż jeden przeskok oznacza łańcuch, którego formuła nie wykryła, bo powstał na styku z istniejącymi regułami serwera (np. wymuszeniem HTTPS lub www).
- Powtórz test po poprawkach, aż próbka przejdzie w 100%.
Punkt czwarty jest najczęściej pomijany. Przy przenosinach na nowy serwer reguły z mapy nakładają się na przekierowania z konfiguracji hostingu, co widać choćby przy migracji WordPressa na nowy hosting, gdzie wtyczka i plik .htaccess potrafią przekierowywać ten sam adres dwukrotnie.
Wersjonowanie arkusza przy dużych migracjach
Przy migracjach powyżej kilku tysięcy adresów arkusz zmienia się kilkanaście razy, zanim trafi na serwer. Bez wersjonowania nie da się później ustalić, która reguła pochodzi z której iteracji.
- Każda wersja przekazana do wdrożenia dostaje numer i datę w nazwie pliku oraz osobną zakładkę „changelog” z listą zmienionych wierszy.
- Wersja wdrożona jest zamrażana: kolejne poprawki trafiają do kopii, nigdy do pliku, z którego wygenerowano reguły.
- Po wdrożeniu dodaj kolumnę z datą aktywacji reguły. Przyda się przy analizie spadków w Search Console.
Ta ostatnia kolumna procentuje tygodnie później. Filtrując raporty po wzorcach starych ścieżek, łatwo porównać ruch przed i po aktywacji; jak to zrobić, pokazuje nasz tutorial o filtrach regex w Search Console.
Jak przekazać mapę zespołowi technicznemu
Deweloper nie potrzebuje całego arkusza. Potrzebuje czystej listy reguł w formacie, który zaimportuje bez ręcznej edycji. Najprościej wyeksportować do CSV tylko wiersze z decyzją „Zatwierdzone”, z dwiema lub trzema kolumnami: źródło, cel, kod odpowiedzi.
Do eksportu warto dołączyć trzy informacje: czy ścieżki mają być dopasowywane dokładnie, czy jako wzorzec; jak traktować parametry zapytania (zachować, odrzucić, dopasować osobno); oraz które reguły ogólne (HTTPS, www, końcowy ukośnik) obowiązują przed regułami z mapy. Bez tego dwie osoby wdrożą ten sam plik na dwa różne sposoby.
Po wdrożeniu mapa nie trafia do archiwum. Raz na kwartał warto ponownie przepuścić stare adresy przez crawler i sprawdzić, czy nowe zmiany na stronie nie utworzyły łańcuchów. Ten krok mamy wpisany w checklistę kwartalnego przeglądu Search Console, obok kontroli raportu stron niezaindeksowanych.
FAQ
Ile wierszy może mieć mapa przekierowań w arkuszu?
Arkusze Google działają płynnie do kilkudziesięciu tysięcy wierszy z formułami COUNTIF i MATCH. Powyżej 50 tysięcy lepiej przenieść walidację do skryptu lub bazy danych, a arkusz zostawić do decyzji i komentarzy.
Czy przekierowywać adresy, które nie mają ruchu?
Tak, jeśli mają linki zewnętrzne lub były w indeksie. Adresy bez ruchu, linków i wartości merytorycznej można oznaczyć kodem 410 zamiast kierować na przypadkową stronę.
Jak długo utrzymywać przekierowania 301 po migracji?
Google zaleca co najmniej rok, ale w praktyce najlepiej utrzymywać je bezterminowo, bo linki zewnętrzne do starych adresów nie znikają.
Czym różni się łańcuch przekierowań od pętli?
Łańcuch to kilka przeskoków, które w końcu prowadzą do strony docelowej. Pętla nigdy się nie kończy, a przeglądarka i robot zwracają błąd. Oba błędy wykrywa formuła sprawdzająca, czy adres docelowy jest jednocześnie źródłem innej reguły.
Czy szablon nadaje się do zmiany samej struktury URL, bez zmiany domeny?
Tak. Kolumny i formuły są identyczne, różni się tylko źródło listy starych adresów, które przy zmianie struktury najlepiej zebrać z crawla i mapy witryny sprzed zmiany.
