- Plan i mapa przekierowań: fundament udanej migracji
- Inwentaryzacja adresów i priorytety
- Dobór kodu odpowiedzi i typów przekierowań
- Mapowanie jeden do jednego i reguły wzorców
- Zasady porządku i bezpieczeństwa
- Wdrożenie przekierowań na popularnych serwerach i platformach
- Apache (.htaccess i VirtualHost)
- Nginx (server blocks)
- IIS (Windows Server)
- WordPress (wtyczka i core)
- CDN i narzędzia brzegowe: Cloudflare, Fastly
- Static hosting i Jamstack: Netlify, Vercel, S3/CloudFront
- Aplikacje i frameworki
- Aspekty SEO i porządkowanie sygnałów po zmianie adresów
- Aktualizacja mapy witryny i indeksowanie
- Zmiana adresu i sygnały kanoniczne
- Języki, regiony i oznaczenia
- Linkowanie wewnętrzne i zewnętrzne
- Parametry, filtry i duplikacja
- Testy, monitoring i wydajność po wdrożeniu
- Sprawdzanie nagłówków i przepływu
- Crawler i raporty wyszukiwarek
- Logi serwera i alerty
- Cache, TTL i warstwy pośrednie
- Wydajność i maksymalna liczba hopów
- Najczęstsze pułapki, wzorce i dobre praktyki
- www vs non-www, HTTP vs HTTPS
- Ukośniki, wielkość liter i kodowanie
- Identyfikatory i paginacja
- Serwisy o dużej skali i wersjonowanie
- Reklamy, kampanie i analityka
- Back-end, API i klienty mobilne
- Porządkowanie treści: kiedy nie przekierowywać
- Komunikacja i wsparcie użytkowników
- Warstwa sieciowa i rejestry
- Checklisty operacyjne
- Czas utrzymania przekierowań
- Bezpieczeństwo i zgodność
Zmiana adresów URL w serwisie to operacja, która wymaga precyzyjnego planu: od przygotowania mapy starych i nowych ścieżek, przez wdrożenie przekierowań, aż po testy, monitorowanie i utrzymanie. Dobrze zrealizowana migracja ochroni ruch, widoczność w wyszukiwarkach oraz wygodę użytkowników. W tym poradniku znajdziesz instrukcje krok po kroku dla popularnych serwerów i platform, listy kontrolne, gotowe reguły oraz praktyczne wskazówki, dzięki którym przeniesiesz treści bez zbędnych strat.
Plan i mapa przekierowań: fundament udanej migracji
Inwentaryzacja adresów i priorytety
Zacznij od zebrania pełnej listy starych adresów URL. Skorzystaj z logów serwera, eksportu z CMS, pliku sitemap, narzędzi typu crawler oraz danych z analityki. Oznacz priorytetowe strony (najczęściej odwiedzane, z największą liczbą linków przychodzących, strony konwersyjne). Ustal, które adresy mają bezpośrednie odpowiedniki, a które wymagają przekierowania do stron nadrzędnych (np. kategorii) lub do treści najbardziej zbliżonej tematycznie. Unikaj masowego kierowania wszystkiego na stronę główną.
Dobór kodu odpowiedzi i typów przekierowań
- Trwałe przekierowania 301 — stosuj, gdy przenosisz content na stałe lub zmieniasz strukturę adresów.
- Tymczasowe 302 — używaj tylko, gdy zmiana jest chwilowa (np. testy A/B lub krótkotrwałe wyłączenie). Długofalowo zamień na 301.
- Trwałe zachowujące metodę 308 — przydatne w API lub tam, gdzie chcesz zachować metodę i body żądania.
W praktyce, w przypadku migracji treści serwisu, najbezpieczniej jest stosować 301. Tylko wyjątkowo sięgaj po 302/308.
Mapowanie jeden do jednego i reguły wzorców
Dla kluczowych podstron przygotuj klasyczne mapowanie 1:1. W pozostałych przypadkach stosuj wzorce (regex), np. przeniesienie całej sekcji /blog/* do /poradnik/*, zachowując „ogon” ścieżki. Ustal zasady dla:
- zmiany domeny (example.com → example.pl),
- www → non-www (lub odwrotnie),
- http → HTTPS,
- dodania/usunięcia ukośnika na końcu (/produkt/ vs /produkt),
- zmiany wielkości liter i znaków diakrytycznych,
- zachowania parametrów zapytania (utm, filtry), aby nie utracić śledzenia kampanii.
Zasady porządku i bezpieczeństwa
- Unikaj łańcuchów (A→B→C). Zawsze kieruj A→C, gdy to możliwe.
- Eliminuj pętle (A→B i B→A). Testuj każdy wzorzec.
- Nie przekierowuj na 404. Jeżeli treść została trwale usunięta bez zamiennika, rozważ 410.
- Zadbaj o kolejność reguł: od najbardziej szczegółowych do ogólnych.
- Oceń wpływ cache. Pamiętaj, że przeglądarki i pośrednicy mogą zapamiętać 301 na długo.
Wdrożenie przekierowań na popularnych serwerach i platformach
Apache (.htaccess i VirtualHost)
Najprościej użyć .htaccess z włączonym mod_rewrite. Umieść plik w katalogu głównym witryny. Kolejność reguł ma znaczenie. Przykłady:
- Włącz silnik: RewriteEngine On
- HTTP → HTTPS: RewriteCond %{HTTPS} off; RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
- non-www → www: RewriteCond %{HTTP_HOST} ^example.com$ [NC]; RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
- Przeniesienie katalogu: RewriteRule ^blog/(.*)$ /poradnik/$1 [R=301,L]
- Pojedyncza strona: Redirect 301 /stara-strona /nowa-strona
W konfiguracji VirtualHost możesz przenieść reguły bezpośrednio do sekcji serwera i uniknąć .htaccess (lepsza wydajność).
Nginx (server blocks)
Nginx preferuje dyrektywy return/rewrite w blokach server/location. Przykłady:
- HTTP → HTTPS: server { listen 80; server_name example.com www.example.com; return 301 https://example.com$request_uri; }
- non-www → www: server { listen 443 ssl; server_name example.com; return 301 https://www.example.com$request_uri; }
- Przeniesienie katalogu: location ~ ^/blog/(.*)$ { return 301 /poradnik/$1; }
- Pojedyncza strona: location = /stara-strona { return 301 /nowa-strona; }
Dbaj o brak kolizji między blokami i testuj konfigurację: nginx -t, a potem przeładuj serwer.
IIS (Windows Server)
W Menedżerze usług IIS wybierz witrynę → URL Rewrite → Add Rule(s). Użyj „Blank rule” do wzorców lub „Redirect” do prostych przeniesień. Ustaw 301 jako kod odpowiedzi i wybierz „Append query string”, jeżeli chcesz zachować parametry. Alternatywnie dodaj reguły ręcznie w web.config, ale unikaj błędów w składni.
WordPress (wtyczka i core)
Jeżeli nie masz dostępu do serwera, skorzystaj z wtyczki Redirection: dodaj pojedyncze adresy i wzorce, włącz zachowanie parametrów i ustaw 301. Dodatkowo:
- Zmień adres witryny w Ustawienia → Ogólne (URL witryny i WordPressa).
- Zaktualizuj bezpośrednie odnośniki w Ustawienia → Bezpośrednie odnośniki (w razie zmiany struktury).
- Upewnij się, że motyw/widżety nie generują twardych linków do starych adresów.
CDN i narzędzia brzegowe: Cloudflare, Fastly
W Cloudflare użyj Bulk Redirects (zalecane) albo Page Rules:
- Bulk Redirects: wgraj listę par From → To i ustaw kod 301. Dobre do dużych migracji.
- Page Rules: proste wzorce, limitowane wolumenem. Pamiętaj o kolejności reguł.
Na Fastly zdefiniuj vcl_recv z return (syntetyczne 301) albo skonfiguruj Edge Dictionaries z mapą przekierowań. Monitoruj skuteczność w real time logs.
Static hosting i Jamstack: Netlify, Vercel, S3/CloudFront
- Netlify: plik _redirects. Przykłady: „/stara /nowa 301”; „/blog/* /poradnik/:splat 301”.
- Vercel: w vercel.json sekcja redirects z source/has/destination i permanent: true.
- S3 + CloudFront: w S3 (Static website hosting) możesz ustawić redirect dla obiektu lub użyć CloudFront Function/Lambda@Edge do reguł wzorcowych.
Aplikacje i frameworki
W aplikacjach możesz wymusić przekierowanie programowo: w Express (res.redirect(301, '/nowa’)), w Next.js/Nuxt konfiguracją w pliku konfiguracyjnym, w Django korzystając z HttpResponsePermanentRedirect. Pilnuj, aby logika nie duplikowała reguł serwera (preferuj przekierowania jak najbliżej krawędzi).
Aspekty SEO i porządkowanie sygnałów po zmianie adresów
Aktualizacja mapy witryny i indeksowanie
Wygeneruj nową sitemap zawierającą wyłącznie docelowe adresy. Umieść ją pod standardową ścieżką /sitemap.xml oraz zaktualizuj wpis w robots.txt. W Google Search Console prześlij nową mapę i sprawdź raporty indeksowania. Nie publikuj starych adresów w nowej mapie — wyszukiwarka powinna odkrywać je przez linki wewnętrzne i logikę przekierowań.
Zmiana adresu i sygnały kanoniczne
Po zmianie domeny użyj narzędzia „Zmiana adresu” w Search Console, aby zsynchronizować sygnały pomiędzy właściwościami. Zadbaj o meta rel=”canonical” na docelowych stronach. Nie ustawiaj canonical na adresy, które już przekierowują (to zbędne), lecz upewnij się, że finalna strona kanoniczna wskazuje sama na siebie lub na preferowaną wersję.
Języki, regiony i oznaczenia
Zaktualizuj adnotacje hreflang po zmianie ścieżek lub domen (np. migracja na domeny krajowe). W przypadku wielojęzyczności zadbaj o spójność adresów między wariantami. Przetestuj w narzędziach walidacyjnych, czy linki zwrotne hreflang działają obustronnie i nie wskazują na przekierowania.
Linkowanie wewnętrzne i zewnętrzne
- Przejrzyj nawigację, stopki, moduły relacyjne i linki w treści. Zmieniaj twarde odnośniki na nowe ścieżki, aby uniknąć zbędnych hopów.
- Przy kluczowych backlinkach wykonaj outreach do wydawców z prośbą o aktualizację linków.
- Aktualizuj profile firmowe, social media, kampanie reklamowe i e-maile transakcyjne.
Parametry, filtry i duplikacja
Dla parametrów sortowania/filtrów zdecyduj, które adresy mają być indeksowane. Rozważ normalizację (np. usuwanie parametrów kampanii po stronie analityki). Dopilnuj, by przekierowania zachowywały kluczowe parametry, chyba że świadomie je odrzucasz.
Testy, monitoring i wydajność po wdrożeniu
Sprawdzanie nagłówków i przepływu
- Użyj curl lub narzędzi HTTP do weryfikacji: status 301/308, poprawny Location, brak łańcuchów.
- Testuj różne warianty (http/https, www/non-www, ze slashem i bez, z parametrami).
- Sprawdź, czy Content-Type i cache-control są adekwatne, a HSTS nie wymusza błędnych zachowań.
Crawler i raporty wyszukiwarek
Przepuść serwis przez crawlera (Screaming Frog, Sitebulb, lokalne narzędzia). Oceń odsetek 3xx, 4xx, 5xx. W Search Console kontroluj błędy „Nie znaleziono (404)”, „Strona z przekierowaniem”, a także trendy ruchu i liczby zaindeksowanych adresów. Daj wyszukiwarkom czas na reindeksację, ale usuwaj przyczyny błędów, które narastają.
Logi serwera i alerty
Włącz zbieranie i analizę logów: szukaj powtarzających się wejść na stare ścieżki bez mapowania. Twórz alerty (np. w Stackdriver, CloudWatch, ELK), gdy odsetek 404 przekroczy próg. Zapisuj referer, aby zidentyfikować źródła ruchu prowadzące do niedziałających adresów i reagować (kontakt, własne przekierowanie, aktualizacja kampanii).
Cache, TTL i warstwy pośrednie
Przemyśl politykę cache. 301 bywa długo przechowywane przez przeglądarki i CDN. Jeżeli istnieje ryzyko pomyłki, na czas migracji możesz użyć 302, a po potwierdzeniu poprawności zmienić na 301. Na CDN ustaw krótsze TTL dla tras objętych migracją. Po finalizacji zwiększ TTL dla stabilnych reguł, poprawiając wydajność.
Wydajność i maksymalna liczba hopów
Każde przekierowanie to dodatkowa podróż RTT. Dąż do jednego przejścia. Preferuj przekierowanie na krawędzi (serwer/edge) zamiast w aplikacji. Profiluj cold/warm caches. Jeśli korzystasz z Service Workera, upewnij się, że nie buforuje starych tras w sposób sprzeczny z nową strukturą.
Najczęstsze pułapki, wzorce i dobre praktyki
www vs non-www, HTTP vs HTTPS
Wybierz ostateczny wariant domeny i konsekwentnie wymuszaj go jednym przekierowaniem. Sekwencja powinna wyglądać: HTTP → docelowa domena i protokół w jednym kroku. Dodaj HSTS po upewnieniu się, że HTTPS jest wszędzie. Sprawdź certyfikaty i SNI w środowiskach z wieloma domenami.
Ukośniki, wielkość liter i kodowanie
- Ustal politykę trailing slash. Jeśli zmieniasz, dodaj regułę normalizującą.
- Wymuś małe litery, jeśli serwer jest wrażliwy na case (np. Linux). Dodaj reguły, które mapują wielkie litery na małe.
- Zwróć uwagę na znaki diakrytyczne i procentowe kodowanie — testuj zarówno zakodowane, jak i niekodowane formy.
Identyfikatory i paginacja
Wzorce paginacji (np. /strona/2) i parametry sortowania muszą zachować logikę. Jeśli łączysz kategorie lub archiwa, przemyśl, dokąd trafią strony 2, 3 itd. W razie braku odpowiednika kieruj na stronę główną sekcji (nie ogólną home), aby utrzymać kontekst.
Serwisy o dużej skali i wersjonowanie
Przy setkach tysięcy adresów użyj pliku mapy przekierowań i mechanizmu klucz→wartość (np. w Redis, Edge Dictionary, rules file). Zasady:
- Ładuj reguły atomowo (blue/green), aby uniknąć niespójności.
- Waliduj format (lint) przed wdrożeniem.
- Stosuj rezerwowe ścieżki: jeżeli brak wpisu, kieruj na najbliższą kategorię.
Reklamy, kampanie i analityka
Zaktualizuj kreacje, feedy produktowe i linki w kampaniach, aby nie przepalać budżetu na przekierowania. W analityce dodaj adnotację o migracji, skonfiguruj filtry, by nie dublować ścieżek (np. bez i z ukośnikiem). Zweryfikuj e-commerce tracking po zmianie domeny i ciastek (przejścia cross-domain).
Back-end, API i klienty mobilne
Jeśli zmieniasz endpointy API, preferuj 308 lub 301 z zachowaniem metody. Zakomunikuj zmiany deweloperom zewnętrznym, przygotuj okres przejściowy i wersjonowanie (v1→v2). W aplikacjach mobilnych uwzględnij aktualizację deep linków oraz App Links/Universal Links.
Porządkowanie treści: kiedy nie przekierowywać
Jeżeli treść jest przestarzała i nie ma odpowiednika, 410 Gone będzie właściwsze niż 301 do strony głównej. Zredukujesz w ten sposób szum w indeksie i poprawisz SEO jakościowe. W artykułach przejętych scal kilka słabych stron w jedną mocną i przekieruj 301 do nowej, lepszej wersji.
Komunikacja i wsparcie użytkowników
Przy większych migracjach przygotuj komunikat dla użytkowników (baner, wpis na blogu, FAQ). Jeżeli zmieniasz domenę, ustaw skrzynki e-mail z aliasami i przekaż instrukcje zespołowi sprzedaży, wsparcia i partnerom. Dzięki temu minimalizujesz utratę kontaktu oraz zaufania.
Warstwa sieciowa i rejestry
Zadbaj o rekordy DNS: poprawne A/AAAA, CNAME, TTL-y dopasowane do planu hot-swap. Jeżeli korzystasz z Anycast i wielu POP, wdrażaj reguły na krawędzi równolegle. Po migracji usuń nieużywane rekordy i certyfikaty, aby ograniczyć ryzyko błędów.
Checklisty operacyjne
- Przed: pełna mapa starych adresów, decyzje o 301/302/410, przygotowane reguły, staging z testami, backup, nowa struktura linków wewnętrznych.
- W trakcie: włączenie przekierowań, testy krytycznych ścieżek, monitoring logów i błędów, szybkie poprawki.
- Po: nowa sitemap i robots.txt, zgłoszenie w Search Console, outreach do kluczowych linkodawców, analiza trendów, sprzątanie łańcuchów.
Czas utrzymania przekierowań
Utrzymuj 301 tak długo, jak to możliwe. Minimum 12 miesięcy przy zmianie domeny i 6–12 miesięcy przy zmianie struktury. W praktyce warto zostawić je „na zawsze” dla stron, do których nadal prowadzą linki. Usuwając przekierowanie, sprawdź, czy nie generujesz masowo 404.
Bezpieczeństwo i zgodność
Po przejściu na HTTPS włącz HSTS (z rozwagą w kwestii preload). Upewnij się, że polityki CSP, referrer i cookies (SameSite, Secure) są poprawne na nowych adresach. Jeżeli zmieniasz domenę, zaktualizuj polityki DMARC/SPF/DKIM dla poczty oraz integracje OAuth/SAML, które zależą od dokładnych adresów przekierowań.