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

Treść

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 RewriteRule lub Redirect,
  • 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 funkcji eval, base64_decode, gzinflate albo ukrytych iframe,
  • 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, home lub 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)

  1. 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ń.
  2. 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ń.
  3. 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_html lub katalog przypisany do twojej domeny),
  • znajdź plik .htaccess i zmień jego nazwę, np. na .htaccess_old lub .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

  1. Zaloguj się do panelu WordPressa jako administrator.
  2. Przejdź do Ustawienia → Bezpośrednie odnośniki (Permalinks).
  3. 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:

  1. Utwórz nowy plik tekstowy o nazwie .htaccess na swoim komputerze.
  2. Wklej do niego standardowy blok WordPressa (sekcja # BEGIN WordPress, RewriteEngine On, RewriteBase / oraz reguły przepisywania adresów na index.php).
  3. Prześlij nowy .htaccess do 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_url oraz home.

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:

  1. Otwórz plik .htaccess w edytorze tekstowym.
  2. Upewnij się, że blok WordPressa (między # BEGIN WordPress a # END WordPress) jest nienaruszony i zgodny z domyślnym wzorcem.
  3. Przejrzyj wszystkie dodatkowe linie typu Redirect 301 … oraz ciągi RewriteCond … i RewriteRule ….

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,
  • iframe kierują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:

  1. Ustawienia → Ogólne – czy adresy WordPressa i witryny wskazują na nową domenę.
  2. Tabelę wp_options (site_url, home) w bazie danych – czy nie pozostały tam stare adresy.
  3. 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:

  1. zresetuj .htaccess do domyślnego,
  2. usuń podwójne reguły wymuszania https – zostaw tylko jedną (najlepiej na poziomie serwera lub sprawdzoną regułę w .htaccess),
  3. wyłącz wtyczki, które dodatkowo zmieniają protokół (i przetestuj),
  4. 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.