Strona WordPress, która nagle otwiera kasyno, farmaceutyki albo ekran „prosimy o aktualizację przeglądarki", to klasyczny objaw infekcji redirect malware — złośliwego kodu przekierowującego użytkowników na obce strony. Najgorsze w przekierowaniach jest to, że bywają niewidoczne: u Ciebie strona działa, bo malware pokazuje obcą treść tylko użytkownikom z Google, na telefonach albo po wejściu z określonym adresem. Ten poradnik pokazuje, skąd biorą się przekierowania w WordPressie, jak znaleźć ich źródło krok po kroku i jak je usunąć — razem z wektorem infekcji, nie tylko objawem.
Najważniejsze: Najczęstsze źródła przekierowań:
.htaccess, wpisysiteurl/homewwp_options, kod wfunctions.phpiheader.php, wstrzyknięty JavaScript w stopce, zainfekowane wtyczki i motywy oraz backdoor PHP wuploads/. Diagnoza: test z refererem Google i user-agentem mobile, przegląd.htaccess, przeszukaniewp_optionsi plików motywu, logi dostępu. Po naprawie: prośba o ponowne rozpatrzenie w Google Search Console i monitoring indeksu.
Skąd biorą się przekierowania na obce strony?
Przekierowanie to tylko efekt — mechanizm może siedzieć w kilku miejscach. Oto źródła spotykane najczęściej, od najbardziej typowych:
.htaccess— dopisane regułyRewriteRule/Redirectkierujące ruch (często tylko z Googlebota albo tylko na mobile) na obcą domenę. Najczęstsze miejsce infekcji, bo działa zanim WordPress w ogóle się uruchomi.wp_options— zmienione wartościsiteurlihomealbo wstrzyknięty kod w opcjach zautoload='yes'. Skutek: cała strona lub jej część ładuje się z obcego adresu.- Pliki motywu —
functions.php,header.php,footer.phpz dopisanymwp_redirect,header("Location: ...")lub wstrzykniętym JavaScript. - Wstrzyknięty JavaScript — fragment w stopce lub w bazie (
wp_posts,wp_options) wykonującywindow.locationpo spełnieniu warunku (np. wejście z Google). - Zainfekowane wtyczki — złośliwy kod dopisany do legalnej wtyczki albo cała wtyczka z pirackiego źródła.
- Backdoor PHP w
uploads/— plik PHP udający obrazek, który samodzielnie wykonuje przekierowania i utrzymuje dostęp hakerowi. - Poziom hostingu / DNS — rzadziej: przejęte konto hostingowe, zmienione rekordy DNS lub reguły po stronie serwera.
Jak znaleźć źródło przekierowania krok po kroku
- Odtwórz przekierowanie jak Google — wejdź na stronę z user-agentem Googlebota i z refererem
https://www.google.com/:
curl -sI -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" \
-e "https://www.google.com/" https://twojadomena.pl/ | head -20
- Sprawdź wersję mobilną — powtórz test z user-agentem telefonu; cloaking często działa tylko dla mobile.
- Przejrzyj
.htaccess— porównaj z domyślnym plikiem WordPressa; każda reguła kierująca na obcą domenę jest podejrzana.
4. Przeszukaj wp_options — sprawdź siteurl, home i opcje z długim, zakodowanym kodem
SELECT option_name, LEFT(option_value, 120) FROM wp_options
WHERE option_name IN ('siteurl', 'home')
OR option_value LIKE '%window.location%'
OR option_value LIKE '%<script%';
- Przeszukaj pliki motywu i wtyczek — szukaj
wp_redirect,header(,base64_decode,eval(,gzinflateoraz skryptów ładowanych z zewnętrznych domen:
grep -rn "wp_redirect\|header(\|base64_decode\|eval(\|gzinflate" \
wp-content/themes wp-content/plugins --include="*.php" | head -40
- Sprawdź
uploads/— każdy plik.phpw katalogu uploads to czerwona flaga; pliki obrazków nie powinny być wykonywalne. - Przejrzyj logi dostępu — nietypowe żądania POST do plików PHP w
uploads/iwp-content/pokazują, skąd haker wchodził i co uruchamiał.
Wskazówka: Jeśli nie możesz odtworzyć przekierowania, sprawdź stronę narzędziami zewnętrznymi (np. Sucuri SiteCheck, VirusTotal dla pojedynczych plików) — zobaczysz stronę tak, jak widzą ją boty i użytkownicy z innych lokalizacji.
Usuwanie przekierowania — pliki i baza
-
Kolejność ma znaczenie: najpierw zabezpiecz kopie (dowodową i roboczą), potem czyść.
-
.htaccess— usuń obce reguły; w razie wątpliwości zastąp plik domyślną zawartością WordPressa i dodaj własne reguły od zera. -
wp_options— przywróć poprawnesiteurlihome, usuń zainfekowane opcje (rób to przez WP-CLI lub phpMyAdmin, po backupie bazy). -
Pliki motywu i wtyczek — usuń dopisany kod albo przeinstaluj pliki z oryginalnych źródeł (motyw z repozytorium, wtyczki z wordpress.org lub od producenta).
-
Baza (
wp_posts) — wyczyść wstrzyknięty JavaScript z treści wpisów i szablonów; sprawdź teżwp_usermetapod kątem nieznanych kont administratorów. -
uploads/— usuń wszystkie pliki.phpi nietypowe pliki; przejrzyj obrazy o podejrzanie dużym rozmiarze.
Po wyczyszczeniu plików i bazy zmień wszystkie hasła (hosting, WordPress, baza, FTP, klucze API) i dopiero wtedy zgłoś stronę do ponownego rozpatrzenia w Google. Pełna procedura czyszczenia: usuwanie wirusów WordPress.
Przekierowanie tylko dla Google / mobile — dlaczego trudniej je złapać?
Cloaking, czyli pokazywanie innej treści botom i użytkownikom mobilnym, to standard w nowoczesnym malware. Kod sprawdza user-agent, adres IP albo referer i przekierowuje tylko „wybrane" wejścia. Dlatego:
- test w przeglądarce na desktopie może nic nie pokazać,
- Google widzi zainfekowaną wersję i oznacza stronę jako niebezpieczną,
- użytkownicy z telefonów trafiają na obce strony, a Ty nie widzisz problemu.
Jedyna skuteczna metoda to testy z różnymi user-agentami (curl powyżej) i analiza kodu — nie „sprawdzanie oczami" w przeglądarce.
Po usunięciu przekierowań — Google Search Console
- Problemy z bezpieczeństwem — sprawdź listę zagrożeń i przykładowe URL-e.
- Prośba o ponowne rozpatrzenie — złóż dopiero po pełnym czyszczeniu; przy niepełnej naprawie proces się wydłuża.
- Usuwanie adresów URL — spamowe adresy z przekierowań zgłoś przez narzędzie Removals.
- Inspekcja i sitemapa — sprawdź kluczowe URL-e inspekcją i wyślij ponownie sitemapę.
- Monitoring — obserwuj indeks i pozycje przez kilka tygodni; powrót przekierowań oznacza, że backdoor przetrwał.
Jak nie dopuścić do powtórki?
- Aktualizuj WordPress, motyw i wtyczki — przekierowania wchodzą najczęściej przez znane podatności (aktualizacja WordPress).
- Wdróż hardening i WAF: ogranicz
wp-login.php, wyłącz XML-RPC, popraw uprawnienia plików (bezpieczeństwo WordPress). - Rób kopie zapasowe z testem odtworzenia — bez kopii każda naprawa jest ryzykowna (kopie zapasowe WordPress).
- Monitoruj integralność plików — zmiana
.htaccesslubfunctions.phppowinna dawać alert w godzinach, nie tygodniach (opieka nad stroną WordPress). - Wybierz hosting z detekcją malware i wsparciem w incydentach (hosting WordPress).
Najczęściej zadawane pytania
Dlaczego strona przekierowuje tylko z Google albo tylko na telefonie?
Bo malware używa cloakingu — sprawdza user-agent, referer lub adres IP i pokazuje obcą treść tylko wybranym wejściom. Dla właściciela strona „działa", a Google i użytkownicy mobilni widzą przekierowanie. To celowe działanie, nie błąd konfiguracji.
Czy przekierowanie w .htaccess to na pewno wirus?
Nie zawsze — poprawnie skonfigurowany .htaccess zawiera przekierowania (np. z HTTP na HTTPS). Podejrzane są reguły kierujące na obce domeny, warunki po user-agenci i kod, którego nie dodawałeś. W razie wątpliwości porównaj plik z domyślną zawartością WordPressa.
Czy wystarczy usunąć przekierowanie, żeby problem zniknął?
Nie — przekierowanie to objaw. Trzeba znaleźć i zamknąć wektor wejścia (podatna wtyczka, słabe hasło, backdoor), inaczej infekcja wróci w ciągu dni lub tygodni. Dlatego po czyszczeniu konieczne jest utwardzenie i zmiana wszystkich haseł.
Jak szybko Google zdejmie ostrzeżenie po naprawie?
Prośba o ponowne rozpatrzenie jest zwykle rozpatrywana w ciągu kilku dni, ale pełny powrót do indeksu i pozycji może zająć kilka tygodni. Proces wydłuża się, gdy infekcja nie została usunięta w całości — Google wykryje przekierowanie ponownie.
Czy przekierowanie na obcą stronę jest niebezpieczne dla użytkowników?
Tak — użytkownicy trafiają na strony z malware, fałszywymi aktualizacjami przeglądarki lub oszustwami. Dlatego Google oznacza takie witryny jako niebezpieczne, a przeglądarki pokazują czerwony ekran ostrzegawczy, co dodatkowo odbija ruch i psuje reputację domeny.
Źródła i narzędzia
- Google Search Console — Problemy z bezpieczeństwem
- WordPress — dokumentacja .htaccess
- Sucuri SiteCheck — weryfikacja strony z zewnątrz
- WPScan — baza podatności
- OWASP — Top 10
👉 Strona przekierowuje i nie wiesz, gdzie siedzi kod? Opisz objawy przez formularz kontaktowy — znajdę źródło przekierowania, wyczyszczę pliki i bazę, zamknę wektor infekcji. Zobacz też usługę usuwanie wirusów WordPress.
📖 Zobacz również: Usuwanie wirusów WordPress, spam SEO w WordPress, jak sprawdzić czy strona jest zainfekowana oraz bezpieczeństwo WordPress.