WordPress może przekierowywać na inną stronę po zmianie pliku .htaccess, jeśli pojawią się w nim błędne reguły, konflikt z innymi mechanizmami przekierowań albo złośliwy kod dodany przez atakującego.
Problem da się krok po kroku zdiagnozować i naprawić – często wystarczy przywrócić domyślny .htaccess WordPressa, poprawić adresy URL w ustawieniach, wyłączyć wtyczki od przekierowań i usunąć ewentualny malware.
1. Na czym polega problem – WordPress przekierowuje na inną stronę po zmianie .htaccess
- 1. Na czym polega problem – WordPress przekierowuje na inną stronę po zmianie .htaccess
- 2. Jak działa plik .htaccess w WordPressie (i dlaczego jest tak ważny)
- 3. Najczęstsze przyczyny przekierowania na inną stronę po zmianie .htaccess
-
4. Plan naprawy krok po kroku
- Krok 0 – wstępna diagnostyka (zanim zaczniesz grzebać w plikach)
- Krok 1 – zrób kopię zapasową .htaccess i plików
- Krok 2 – przywróć domyślny .htaccess WordPressa
- Krok 3 – sprawdź i popraw adresy WordPressa (URL domeny)
- Krok 4 – usuń lub przeanalizuj własne reguły przekierowań w .htaccess
- Krok 5 – wyłącz wtyczki, które mogą powodować przekierowania
- Krok 6 – jeśli przekierowanie prowadzi na złośliwą stronę – pełne czyszczenie (bezpieczeństwo)
- Krok 7 – sprawdź przekierowania narzędziami diagnostycznymi
- 5. Typowe scenariusze i konkretne rozwiązania
- 6. Dobre praktyki na przyszłość
Poniżej najczęstsze objawy, które wskazują na błędne lub niepożądane przekierowania:
- po wejściu na twoją domenę następuje automatyczne przekierowanie na inną witrynę (czasem złośliwą, pełną reklam lub fałszywych stron logowania),
- adres URL w przeglądarce zmienia się na inną domenę, której nie konfigurowałeś,
- pojawia się błąd ERR_TOO_MANY_REDIRECTS („strona spowodowała zbyt wiele przekierowań”), czyli pętla przekierowań między adresami (np. http/https, www/bez www).
Najczęściej problem zaczyna się po następujących działaniach:
- ręcznej edycji pliku .htaccess (dodanie własnych przekierowań, wymuszenie HTTPS, zmiana domeny),
- instalacji lub konfiguracji wtyczki od przekierowań, cache lub bezpieczeństwa, która zapisuje reguły w .htaccess,
- ataku na stronę – złośliwe skrypty dopisują własne reguły przekierowań do .htaccess, header.php, footer.php, functions.php lub plików rdzeniowych WordPressa.
2. Jak działa plik .htaccess w WordPressie (i dlaczego jest tak ważny)
Plik .htaccess to plik konfiguracyjny serwera Apache, który silnie wpływa na sposób działania WordPressa i całej witryny.
Najważniejsze zadania .htaccess w kontekście WordPressa to:
- kontrolowanie obsługi bezpośrednich odnośników (permalinks) – WordPress zapisuje w nim domyślne reguły przepisywania adresów URL,
- obsługa przekierowań 301/302 (np. z http na https, z domeny bez www na domenę z www, z jednej domeny na drugą),
- akceptowanie zmian wprowadzanych przez wtyczki (cache, bezpieczeństwo, SEO, przekierowania), które dodają własne dyrektywy.
Jeśli w .htaccess pojawi się jedna z poniższych sytuacji, serwer zacznie wykonywać niechciane przekierowania:
- błędna reguła
RewriteRulelubRedirect, - konflikt między kilkoma różnymi przekierowaniami,
- zaszyty złośliwy kod.
3. Najczęstsze przyczyny przekierowania na inną stronę po zmianie .htaccess
Błędne lub nadpisane reguły w .htaccess
Do problemów prowadzą m.in. następujące przypadki:
- przekierowanie całej domeny na inną (np.
Redirect 301 / https://inna-domena.pl/) zapisane w .htaccess – czasem przypadkowo, czasem przez wtyczkę lub malware, - podwójne reguły wymuszające https lub www/bez www (np. jedna z .htaccess, druga z poziomu serwera lub wtyczki), co wywołuje pętle przekierowań,
- ingerencja w domyślny blok
# BEGIN WordPress/# END WordPress, który odpowiada za permalinki – jego uszkodzenie może powodować błędne przejścia między adresami URL.
Błędne adresy witryny w ustawieniach WordPressa
WordPress przechowuje adresy strony w polach Adres WordPressa (URL) i Adres witryny (URL) (Ustawienia → Ogólne) oraz w bazie w opcjach site_url i home (tabela wp_options).
Jeśli po zmianie .htaccess WordPress nadal ma wpisaną starą domenę albo adresy różnią się (np. jeden z www, drugi bez www, jeden na http, drugi na https), może dochodzić do przekierowań na inną domenę lub do pętli przekierowań.
Konflikt z wtyczkami od przekierowań / cache / bezpieczeństwa
Wtyczki, które często generują lub wymuszają przekierowania, to:
- do przekierowań – np. Redirection;
- cache – optimizery, przyspieszacze, wtyczki CDN;
- bezpieczeństwa – np. blokery brute-force, firewalle.
Gdy działają równolegle z ręcznymi regułami, mogą nadpisywać się nawzajem i powodować niechciane przekierowania na inną stronę.
Infekcja złośliwym oprogramowaniem (malware)
Przekierowanie na obcą, złośliwą witrynę bardzo często oznacza infekcję.
- haker dodaje do .htaccess reguły kierujące ruch na swoją domenę,
- w plikach motywu (szczególnie
header.php,footer.php,functions.php) pojawia się wygenerowany lub zakodowany kod robiący przekierowania, często z użyciem funkcjieval,base64_decode,gzinflatealbo ukrytychiframe, - zmieniane są pliki rdzeniowe WordPressa, np.
index.php,wp-config.php,wp-load.php– zawierają wtedy fragmenty odpowiedzialne za przekierowanie, - w bazie danych pojawiają się wpisy modyfikujące
site_url,homelub wstrzykujące kod JavaScript w treści wpisów czy opcjach.
W takim przypadku stronę należy traktować jako zainfekowaną i przeprowadzić pełne czyszczenie oraz wzmocnienie zabezpieczeń.
4. Plan naprawy krok po kroku
Poniższa procedura jest bezpieczna i skuteczna w większości przypadków, gdy WordPress zaczyna przekierowywać na inną stronę po zmianie .htaccess.
Krok 0 – wstępna diagnostyka (zanim zaczniesz grzebać w plikach)
- Sprawdź stronę w trybie incognito i na innym urządzeniu. Wyklucz problem z lokalną pamięcią podręczną przeglądarki lub ciasteczkami – to jedno z podstawowych zaleceń przy błędach przekierowań.
- Wyczyść cache WordPressa i ewentualnego CDN. Jeśli używasz wtyczek cache lub zewnętrznego CDN/proxy, wyczyść ich pamięć podręczną – przeglądarka mogła zapamiętać „stary” zestaw przekierowań.
- Sprawdź, czy przekierowanie dotyczy wszystkich podstron, czy tylko niektórych. To zawęzi obszar poszukiwań źródła problemu.
Jeśli problem dotyczy całej domeny, najczęściej winna jest globalna reguła w .htaccess, ustawienia domeny w WordPressie lub malware. Jeśli obejmuje tylko wybrane adresy, przyczyna może tkwić w konkretnym wpisie, wtyczce lub regule dla danego katalogu/adresu.
Krok 1 – zrób kopię zapasową .htaccess i plików
Zanim cokolwiek zmienisz, wykonaj bezpieczną kopię kluczowych elementów:
- połącz się z serwerem przez FTP lub menedżera plików w panelu hostingu,
- wejdź do katalogu głównego domeny (często
/public_htmllub katalog przypisany do twojej domeny), - znajdź plik .htaccess i zmień jego nazwę, np. na
.htaccess_oldlub.htaccess_backup, aby zachować kopię.
Dobrą praktyką jest też wykonanie pełnej kopii plików strony (np. spakowanie katalogu WordPressa) oraz bazy danych (eksport z phpMyAdmin), aby móc wrócić do stanu wyjściowego, jeśli coś pójdzie nie tak.
Krok 2 – przywróć domyślny .htaccess WordPressa
Najprostsza i często najskuteczniejsza metoda to reset pliku .htaccess do domyślnej postaci WordPressa.
Metoda A – z poziomu panelu WordPressa
- Zaloguj się do panelu WordPressa jako administrator.
- Przejdź do Ustawienia → Bezpośrednie odnośniki (Permalinks).
- Bez zmiany ustawień kliknij na dole Zapisz zmiany.
WordPress podczas tej operacji generuje na nowo domyślny blok .htaccess odpowiedzialny za permalinki, nadpisując uszkodzony lub brakujący plik.
Metoda B – ręcznie przez FTP / panel hostingu
Jeśli nie masz dostępu do panelu (np. panel też się przekierowuje), zrób to ręcznie:
- Utwórz nowy plik tekstowy o nazwie
.htaccessna swoim komputerze. - Wklej do niego standardowy blok WordPressa (sekcja
# BEGIN WordPress,RewriteEngine On,RewriteBase /oraz reguły przepisywania adresów naindex.php). - Prześlij nowy
.htaccessdo katalogu głównego domeny (tam, gdzie znajduje sięwp-config.php).
Jeśli problem wynikał z błędnych reguł w .htaccess, przekierowanie na inną stronę zwykle ustaje. Gdy przekierowanie nadal występuje, przyczyna leży prawdopodobnie w ustawieniach WordPressa, wtyczkach lub malware.
Krok 3 – sprawdź i popraw adresy WordPressa (URL domeny)
To kluczowy etap, szczególnie po zmianie domeny, protokołu (http/https) lub konfiguracji www/bez www.
Wejdź do Ustawienia → Ogólne i upewnij się, że pola Adres WordPressa (URL) oraz Adres witryny (URL) zawierają prawidłową i aktualną domenę, np. https://twoja-domena.pl (z lub bez www – ale spójnie).
Te dwa adresy powinny być identyczne pod względem protokołu (http/https) i wersji z/bez www.
Jeśli nie możesz wejść do panelu, ustaw wartości WP_HOME i WP_SITEURL w pliku wp-config.php, wpisując poprawny adres domeny (zgodnie z formatem podawanym w dokumentacji).
W razie potrzeby możesz też wykonać korektę bezpośrednio w bazie danych:
- wejdź do phpMyAdmin,
- odnajdź tabelę
wp_options(prefiks może być inny, np.wp123_options), - sprawdź i popraw pola
site_urlorazhome.
Błędne wartości w tych polach to częsta przyczyna przekierowań na poprzednią domenę lub w pętle.
Krok 4 – usuń lub przeanalizuj własne reguły przekierowań w .htaccess
Jeśli wcześniej dodawałeś własne reguły (np. zmiana domeny, przekierowanie starej struktury URL), zrób przegląd pliku:
- Otwórz plik
.htaccessw edytorze tekstowym. - Upewnij się, że blok WordPressa (między
# BEGIN WordPressa# END WordPress) jest nienaruszony i zgodny z domyślnym wzorcem. - Przejrzyj wszystkie dodatkowe linie typu
Redirect 301 …oraz ciągiRewriteCond …iRewriteRule ….
Podczas weryfikacji sprawdź, czy:
- nie przekierowują na obcą domenę,
- nie powielają się z innymi regułami (np. dwa różne wymuszenia https),
- nie tworzą pętli (np. przekierowanie z www na bez www i jednocześnie z bez www na www).
W razie wątpliwości tymczasowo usuń lub zakomentuj wszystkie dodatkowe przekierowania poza domyślnym blokiem WordPressa; następnie przetestuj stronę i sprawdź, czy problem ustąpił.
Krok 5 – wyłącz wtyczki, które mogą powodować przekierowania
Wyłącz wszystkie wtyczki na próbę. Zrób to w panelu (Wtyczki → Zainstalowane → Zaznacz wszystkie → Wyłącz). Gdy panel też się przekierowuje, zmień nazwę katalogu wp-content/plugins przez FTP – WordPress automatycznie uzna wtyczki za nieaktywne.
Sprawdź, czy po wyłączeniu wtyczek przekierowanie ustaje. Jeśli tak, włączaj wtyczki pojedynczo i testuj stronę po każdej aktywacji, aż znajdziesz winowajcę. Szczególną uwagę zwróć na wtyczki:
- do przekierowań (np. Redirection),
- do cache,
- do bezpieczeństwa (mogą przenosić użytkowników na strony logowania, captchy itd.).
Krok 6 – jeśli przekierowanie prowadzi na złośliwą stronę – pełne czyszczenie (bezpieczeństwo)
Gwałtowne przekierowania na podejrzane witryny (np. fałszywe banki, „wygrane iPhone’y”, agresywne reklamy) najczęściej oznaczają infekcję.
Przejrzyj pliki motywu
Sprawdź kluczowe pliki aktywnego motywu pod kątem obcego kodu:
wp-content/themes/aktywny-motyw/header.php,wp-content/themes/aktywny-motyw/footer.php,wp-content/themes/aktywny-motyw/functions.php.
Szukaj podejrzanych fragmentów, zwłaszcza:
- obszernych, niezrozumiałych bloków,
- użycia funkcji
base64_decode,eval,gzinflate, iframekierujących na obce domeny.
Usuń je (po wykonaniu kopii plików) albo przywróć czyste wersje plików z oryginalnego motywu.
Sprawdź pliki rdzeniowe WordPressa
Najczęściej modyfikowane przez atakujących są następujące pliki:
index.php,wp-config.php,wp-load.php,- oraz sam
.htaccess.
Rekomendowane działania naprawcze:
- pobierz czystą kopię WordPressa w tej samej wersji, co twoja instalacja,
- porównaj pliki (np. narzędziem typu „Diffchecker”) z tymi na serwerze,
- zastąp zmienione pliki wersjami z czystego pakietu.
Przeskanuj stronę wtyczkami bezpieczeństwa
Zainstaluj i uruchom pełne skanowanie (np. Wordfence lub Sucuri Security) – narzędzia te wykrywają podejrzane pliki, fragmenty kodu i znane sygnatury malware.
Sprawdź bazę danych
W phpMyAdmin skontroluj w tabeli wp_options wartości site_url oraz home (czy nie wskazują na obcą domenę) i przejrzyj wybrane tabele (np. wp_posts, wp_options) pod kątem wstrzykniętego JavaScriptu lub podejrzanych wpisów.
Usuń podejrzanych użytkowników i zmień hasła
Aby zapobiec ponownej infekcji, wykonaj następujące działania w panelu i na hostingu:
- wejdź do sekcji Użytkownicy w panelu WordPressa,
- sprawdź, czy nie ma nieznanych kont z rolą administratora — jeśli są, usuń je,
- zmień wszystkie hasła — do WordPressa, hostingu, FTP i bazy danych.
Po czyszczeniu zainstaluj wtyczkę zabezpieczającą (np. iThemes Security) i włącz dodatkowe zabezpieczenia.
Krok 7 – sprawdź przekierowania narzędziami diagnostycznymi
Użyj „redirect checkerów”, aby potwierdzić, że dla twojej domeny nie występują już nietypowe przekierowania lub pętle. Takie narzędzia są szczególnie przydatne przy błędzie Too Many Redirects, bo pokazują pełny łańcuch przekierowań.
5. Typowe scenariusze i konkretne rozwiązania
Zmiana domeny – WordPress dalej przekierowuje na starą
Gdy po migracji:
- zmieniłeś domenę,
- przerzuciłeś stronę na nowy adres,
- edytowałeś .htaccess, ale wszystko wraca na poprzednią domenę,
sprawdź następujące elementy konfiguracji:
- Ustawienia → Ogólne – czy adresy WordPressa i witryny wskazują na nową domenę.
- Tabelę
wp_options(site_url,home) w bazie danych – czy nie pozostały tam stare adresy. - Plik .htaccess – czy nie ma tam przekierowania całej domeny na starą, np.
Redirect 301 / https://stara-domena.pl/.
Często wystarczy wykonać te trzy kroki:
- poprawić adresy w panelu,
- zresetować .htaccess do domyślnego,
- dodać jedno poprawne przekierowanie ze starej domeny na nową (na poziomie serwera lub w osobnym .htaccess dla starej domeny).
Wdrożenie HTTPS – pętla przekierowań i błąd ERR_TOO_MANY_REDIRECTS
Po instalacji certyfikatu SSL może dojść do konfliktu, jeśli jednocześnie wymuszasz https w kilku miejscach. Typowe źródła problemu to:
- dodatkowe reguły w .htaccess (własne lub z wtyczek),
- wymuszanie https po stronie hostingu,
- mechanizmy wtyczek bezpieczeństwa.
Rozwiązanie wdrażaj w tej kolejności:
- zresetuj .htaccess do domyślnego,
- usuń podwójne reguły wymuszania https – zostaw tylko jedną (najlepiej na poziomie serwera lub sprawdzoną regułę w .htaccess),
- wyłącz wtyczki, które dodatkowo zmieniają protokół (i przetestuj),
- wyczyść cache przeglądarki, WordPressa i ewentualnego CDN.
Wtyczka „Redirection” lub podobna zaczęła przekierowywać całą stronę
Wejdź w ustawienia wtyczki i sprawdź listę reguł – mogła powstać reguła obejmująca całą domenę. Usuń lub popraw przekierowanie kierujące na inną stronę.
Gdy nie możesz wejść do panelu, wyłącz wtyczkę przez zmianę nazwy jej katalogu w wp-content/plugins.
6. Dobre praktyki na przyszłość
Aby zminimalizować ryzyko podobnych problemów, stosuj poniższe zasady:
- nie edytuj .htaccess „na oślep” – zawsze rób kopię pliku przed zmianami,
- zapisuj zmiany i testuj stronę po każdej nowej regule przekierowania – szczególnie po przekierowaniach globalnych,
- utrzymuj spójne adresy (http/https, www/bez www) w ustawieniach WordPressa i w konfiguracji serwera,
- regularnie aktualizuj WordPressa, wtyczki i motyw oraz używaj wtyczek bezpieczeństwa wykrywających nietypowe zmiany w plikach i bazie,
- korzystaj z kopii zapasowych – w razie problemu szybko przywrócisz poprzedni, działający stan strony.