- Przygotowanie i bezpieczeństwo przed zmianą adresu
- Inwentaryzacja adresów i zasobów
- Kopie zapasowe i punkt przywracania
- Tryb konserwacji i okno serwisowe
- Strategia domenowa: www, http/https, subkatalog
- Testy lokalne, DNS, hosts
- Metody zmiany adresu w WordPress
- Panel administracyjny: Ustawienia → Ogólne
- Wymuszenie w wp-config.php
- Zmiana przez WP-CLI
- SQL w phpMyAdmin lub narzędziu klienta
- Awaryjnie: jednorazowa aktualizacja przez functions.php
- Przepłukanie struktury odnośników
- Aktualizacja linków w bazie i plikach po zmianie
- Serializacja i dlaczego prosty REPLACE bywa groźny
- Bezpieczna podmiana przez WP-CLI search-replace
- Wtyczki do podmiany odnośników
- Ręczne poprawki w plikach motywu i wtyczek
- GUID, upload_path, multimedia i osadzenia
- CDN i zasoby zewnętrzne
- Przekierowania, HTTPS, cache i testy po zmianie
- 301 ze starej domeny na nową
- Wymuszenie HTTPS i SSL
- Mieszana treść i bezpieczeństwo
- Permalinki, cache, opcache, CDN
- Testy funkcjonalne i techniczne
- SEO i narzędzia webmasterów
- Warianty zaawansowane i rozwiązywanie problemów
- Multisite i sieci witryn
- Zmiana lokalizacji instalacji: katalog główny ↔ podkatalog
- Problemy z logowaniem, pętle i cookies
- 404/403, uprawnienia i ścieżki uploadów
- Integracje, OAuth, poczta i domeny nadawcze
- Rollback i monitoring po wdrożeniu
Zmiana adresu witryny opartej o WordPress po przeniesieniu na inny serwer lub nową domenę to proces, który wymaga planu, kopii zapasowych i metodycznego działania. Poniższa instrukcja pokazuje, jak bezpiecznie zaktualizować URL, zadbać o bazę i pliki, wymusić poprawne przekierowania, naprawić problemy z logowaniem oraz sprawdzić SEO. Sprawdzi się zarówno przy przenosinach na nowy hosting, jak i przy zmianie migracji między środowiskami czy podmianie domeny.
Przygotowanie i bezpieczeństwo przed zmianą adresu
Inwentaryzacja adresów i zasobów
Zanim zmienisz adres, sporządź listę wszystkich miejsc, w których stary adres może występować: treści wpisów i stron, menu, widżety, pola niestandardowe, szablony motywu, pliki CSS i JS, ustawienia wtyczek (formularze, cache, SEO, integracje płatności), grafiki tła, shortcody, linki w blokach Gutenberg, pola ACF, integracje (API, webhooki), adresy w robotach i mapie strony. Uwzględnij także adresy alternatywne: z www i bez www, z http i https, subdomeny, aliasy domenowe, stare ścieżki podkatalogów.
Kopie zapasowe i punkt przywracania
Wykonaj pełną kopię: pliki wp-content (themes, plugins, uploads), pliki w katalogu głównym (wp-config.php, index.php), oraz zrzut baza danych. Przetestuj odtworzenie kopii lokalnie lub na stagingu. Jeżeli korzystasz z narzędzi hostingu (snapshot, backup on-demand), utwórz punkt przywracania tuż przed pracami. Zapisz wersję PHP i moduły serwera do ewentualnego odtworzenia środowiska. Nie pomijaj sprawdzenia spójności kopii pod kątem wielkości i sum kontrolnych.
Tryb konserwacji i okno serwisowe
Ustal okno na prace i włącz tryb konserwacji (maintenance) lub przełącz ruch przez proxy/CDN, aby ograniczyć błędy i cache starych adresów. Zablokuj logowanie i edycję treści na czas zmiany, aby uniknąć rozjechania danych podczas podmian. Poinformuj zespół marketingu i wsparcia o planowanych zmianach, aby zsynchronizować działania (np. aktualizacja linków w kampaniach).
Strategia domenowa: www, http/https, subkatalog
Wybierz docelowy kanoniczny adres: z www, czy bez, i czy wymuszasz HTTPS. Jeżeli migrujesz do podkatalogu (np. z / na /blog) albo z podkatalogu do katalogu głównego, zaplanuj odpowiednie reguły przepisywania adresów. Sprawdź certyfikat dla nowych hostów (SAN dla aliasów), gotowość do HSTS oraz listę starych adresów, które muszą prowadzić 301 na nowe.
Testy lokalne, DNS, hosts
Najbezpieczniej przeprowadzić zmianę i testy na stagingu. Aby zweryfikować instancję przed przepięciem DNS, użyj wpisu w pliku hosts, wskazując nowy serwer dla wybranej domeny lokalnie. Kiedy wszystko zadziała, zmień rekordy DNS (A/AAAA, CNAME) i oblicz TTL, aby zminimalizować czas propagacji. Zaplanuj krótkie TTL dzień wcześniej, aby skrócić oczekiwanie.
Metody zmiany adresu w WordPress
Panel administracyjny: Ustawienia → Ogólne
Najprostsze podejście: zaloguj się do kokpitu i w Ustawienia → Ogólne zmień Adres WordPress (siteurl) i Adres witryny (home) na nowy adres. Zapisz ustawienia. Jeżeli po zmianie utracisz dostęp (pętla przekierowań, 404), skorzystaj z którejś z metod awaryjnych poniżej.
Wymuszenie w wp-config.php
Gdy panel jest niedostępny, możesz nadpisać adresy, dopisując do pliku wp-config.php poniżej define(’DB_NAME’…) linie:
- define(’WP_HOME’, 'https://nowa-domena.pl’);
- define(’WP_SITEURL’, 'https://nowa-domena.pl’);
To rozwiązanie działa natychmiast, ale traktuj je jako tymczasowe. Po ustabilizowaniu konfiguracji wróć do domyślnego przechowywania adresów w bazie.
Zmiana przez WP-CLI
Jeśli masz dostęp do SSH, to najszybsza i najczystsza metoda. Przykładowo:
- wp option get home
- wp option get siteurl
- wp option update home 'https://nowa-domena.pl’
- wp option update siteurl 'https://nowa-domena.pl’
Następnie wykonaj bezpieczną podmianę wszystkich odnośników (z pominięciem GUID) – instrukcja w kolejnym rozdziale.
SQL w phpMyAdmin lub narzędziu klienta
Jeżeli dysponujesz tylko dostępem do bazy, zaktualizuj podstawowe opcje:
- UPDATE wp_options SET option_value=’https://nowa-domena.pl’ WHERE option_name IN (’siteurl’,’home’);
Uwaga na prefix tabel, jeżeli był zmieniony. Nie modyfikuj kolumny guid w wp_posts. Na tym etapie nie wykonuj prostych REPLACE na całej bazie, bo uszkodzisz dane serializowane – użyj narzędzi świadomych serializacji (opis niżej).
Awaryjnie: jednorazowa aktualizacja przez functions.php
Gdy nic innego nie działa, dodaj tymczasowo do functions.php motywu (najlepiej motywu potomnego) linie, które jednorazowo wymuszą zmianę:
- update_option(’siteurl’,’https://nowa-domena.pl’);
- update_option(’home’,’https://nowa-domena.pl’);
Odwiedź stronę główną, sprawdź działanie, a następnie natychmiast usuń te linie, aby nie nadpisywały ustawień przy każdym żądaniu.
Przepłukanie struktury odnośników
Po każdej zmianie adresu przejdź do Ustawienia → Bezpośrednie odnośniki i zapisz ponownie. To odtworzy reguły przepisywania i plik konfiguracyjny serwera, ograniczając błędy 404.
Aktualizacja linków w bazie i plikach po zmianie
Serializacja i dlaczego prosty REPLACE bywa groźny
Dane wielu wtyczek i edytora blokowego są serializowane. Zwykłe polecenie REPLACE może zmienić długości łańcuchów i uszkodzić konfigurację. Dlatego do globalnej podmiany używaj narzędzi rozumiejących serializację i multibyte, aby zachować spójność rozmiarów ciągów.
Bezpieczna podmiana przez WP-CLI search-replace
Świetnie sprawdza się komenda:
- wp search-replace 'http://stara-domena.pl’ 'https://nowa-domena.pl’ –all-tables-with-prefix –skip-columns=guid –precise –report-changed-only
Jeżeli używałeś www: powtórz dla wariantów z i bez www. Dodatkowo zamień http na https dla własnej domeny, aby wyeliminować mieszaną treść po wdrożeniu certyfikatu. Użyj najpierw flagi –dry-run, aby zobaczyć planowane zmiany.
Wtyczki do podmiany odnośników
Jeżeli nie masz dostępu do konsoli, użyj wtyczek typu Better Search Replace, Velvet Blues lub go-live update urls. Wybieraj tylko narzędzia obsługujące serializację. Zrób najpierw skan próbny, a po operacji sprawdź losowo kilka rekordów (np. w ACF, widżetach, menu), czy poprawnie się zaktualizowały.
Ręczne poprawki w plikach motywu i wtyczek
W niektórych motywach adres jest wpisany „na sztywno”. Przeskanuj pliki szukając starej domeny w katalogach wp-content/themes i wp-content/plugins. Sprawdź style (background-image), skrypty JS (fetch, AJAX), a także pliki konfiguracyjne. Jeśli masz repozytorium GIT, wykonaj wyszukiwanie globalne i commituj zmiany osobno dla przejrzystości historii.
GUID, upload_path, multimedia i osadzenia
Nie modyfikuj wartości guid w tabeli wp_posts – służą do identyfikacji wpisów, nie do aktualnego linkowania. Zweryfikuj ustawienia upload_path i upload_url_path w wp_options (często puste; jeżeli ustawione, dostosuj do nowego adresu). Sprawdź osadzenia iframe, oEmbed, mapy, video – część może wskazywać na stare zasoby lub protokół http.
CDN i zasoby zewnętrzne
Jeśli korzystasz z CDN, zaktualizuj origin, strefy pull/push, reguły minifikacji i odśwież cache. Dopilnuj, aby adresy CDN były poprawnie przepisane także w blokach edytora i w dynamicznych opcjach wtyczek (np. optymalizacja obrazów). Zaktualizuj politykę CORS, jeżeli domena się zmieniła.
Przekierowania, HTTPS, cache i testy po zmianie
301 ze starej domeny na nową
Aby zachować SEO i nie tracić ruchu, ustaw stałe przekierowania 301. Na Apache edytuj .htaccess w katalogu głównym starej domeny:
- RewriteEngine On
- RewriteCond %{HTTP_HOST} ^stara-domena\.pl$ [OR]
- RewriteCond %{HTTP_HOST} ^www\.stara-domena\.pl$ [NC]
- RewriteRule ^(.*)$ https://nowa-domena.pl/$1 [L,R=301]
W nginx użyj return 301 w serwerze dla starej domeny. Upewnij się, że zachowujesz ścieżki i parametry, aby użytkownicy i roboty trafiali na równoważne zasoby.
Wymuszenie HTTPS i SSL
Zainstaluj certyfikat dla nowej domeny oraz aliasów (np. www). Wymuś HTTPS regułami serwera i wtyczką tylko, gdy nie możesz edytować konfiguracji. Rozważ HSTS po upewnieniu się, że cały serwis działa na HTTPS. Zaktualizuj adresy w sitemapie i kanoniczne, aby wskazywały na https.
Mieszana treść i bezpieczeństwo
Po wdrożeniu HTTPS sprawdź konsolę przeglądarki i skanery (np. webhint, securityheaders), czy nie ładujesz zasobów przez http. Dodatkowo rozważ politykę Content Security Policy i aktualizację linków do zewnętrznych skryptów (np. czcionki, trackery), aby były zgodne z HTTPS.
Permalinki, cache, opcache, CDN
Po zmianie zapisz ponownie bezpośrednie odnośniki. Wyczyść cache wtyczek (page/object), pamięć podręczną serwera (nginx microcache, Apache), opcache PHP, oraz cache CDN. Poproś użytkowników o odświeżenie przeglądarki lub ustaw krótkotrwałe nagłówki wygaszające stare zasoby. Zregeneruj miniatury obrazów, jeżeli ścieżki katalogów się zmieniły.
Testy funkcjonalne i techniczne
Przeskanuj witrynę crawlerem (np. Screaming Frog, Sitebulb) z włączoną walidacją statusów i wykrywaniem mieszanej treści. Sprawdź: logowanie, wysyłkę formularzy, płatności, wyszukiwarkę, REST API, mapę strony, RSS, feedy, edycję w kokpicie, CRON (zaplanowane zadania), kolejki e-mail, webhooki. Zbadaj logi serwera pod kątem 404/500.
SEO i narzędzia webmasterów
Zaktualizuj profil w Google Search Console: prześlij nową mapę strony, użyj narzędzia Zmiana adresu, potwierdź wszystkie warianty (http/https, z i bez www). Zaktualizuj Bing Webmaster Tools. Zweryfikuj tagi kanoniczne, Open Graph i Twitter Cards. Skonfiguruj monitorowanie 404 i przekierowań, aby szybko łapać błędy po migracji.
Warianty zaawansowane i rozwiązywanie problemów
Multisite i sieci witryn
Dla Multisite zaktualizuj domenę główną w Network Admin. W bazie sprawdź tabele wp_blogs i wp_site, a w meta sieci – odpowiednie URL-e. Z WP-CLI możesz użyć wp site list i wp site update –domain=nowa-domena.pl –path=/ dla poszczególnych stron. Przy domenach per site upewnij się, że mapowanie domen jest prawidłowe i przekierowania 301 nie tworzą pętli.
Zmiana lokalizacji instalacji: katalog główny ↔ podkatalog
Jeśli przenosisz WP z / na /blog (lub odwrotnie), ustaw siteurl/home odpowiednio do nowej lokalizacji i zmień lokalizację plików index.php i .htaccess. W index.php dostosuj ścieżkę do wp-blog-header.php, gdy plik migruje z/do podkatalogu. Pamiętaj o podmianie linków wewnętrznych zawierających stare ścieżki.
Problemy z logowaniem, pętle i cookies
Pętle logowania wynikają zwykle z niespójności home/siteurl lub błędnych ciasteczek. W wp-config.php tymczasowo dodaj define(’COOKIE_DOMAIN’, false); i sprawdź, czy domena ciasteczek odpowiada nowej domenie i prefiksowi www. Wyzeruj pamięć podręczną przeglądarki. Sprawdź także definicje FORCE_SSL_ADMIN i adresy w siteurl/home. Gdy korzystasz z reverse proxy, popraw nagłówki X-Forwarded-Proto.
404/403, uprawnienia i ścieżki uploadów
Masowe 404 zasobów statycznych oznacza zwykle błędne reguły przepisywania lub nieistniejące ścieżki. Sprawdź właściciela plików i prawa (np. 644/755), dyrektywy location w nginx i AllowOverride w Apache. Skontroluj upload_path i upload_url_path. 403 mogą wynikać z reguł WAF/security – zaktualizuj listy dozwolonych hostów i refererów po zmianie domeny.
Integracje, OAuth, poczta i domeny nadawcze
Po zmianie adresu uaktualnij redirect_uri w aplikacjach OAuth (Google, Facebook, Apple), klucze i webhooki (np. Stripe, PayU, Przelewy24), adresy powrotu z bramek płatności. Zaktualizuj ustawienia e-mail nadawcy, SPF/DKIM/DMARC dla nowej domeny, aby wiadomości nie trafiały do spamu. Przeadresuj reguły w tag managerze i analityce.
Rollback i monitoring po wdrożeniu
Jeśli pojawią się krytyczne błędy, przywróć poprzedni stan z kopii i odtwórz plan na spokojnie na stagingu. Po udanej zmianie monitoruj logi, alerty uptime, błędy JS i wydajność. Zbierz błędy 404 i dodaj celowane 301. Po kilku dniach usuń tymczasowe definicje w wp-config.php i dopnij politykę HSTS.