Site WordPress care redirecționează către alt site: găsiți redirecționarea

Vizitatorii dumneavoastră ajung pe o pagină de loterie, de farmacie sau de fals suport tehnic, iar dumneavoastră vedeți site-ul normal. Este semnătura unei redirecționări injectate, de cele mai multe ori condiționate. Acest ghid arată cum o reproduceți, cum o găsiți în fișiere sau în baza de date și cum închideți accesul prin care a fost pusă.

Publicat la 21 septembrie 2026 Timp de citire: 10 minute

Toate ghidurile

Esențialul

  1. Reproduceți redirecționarea ca un vizitator: navigare privată, telefon pe date mobile, sosire dintr-un rezultat de căutare.
  2. Faceți o copie completă a site-ului în starea actuală, fișiere și bază de date, înainte de a modifica orice.
  3. Schimbați parolele contului de găzduire, FTP, bazei de date și administratorilor WordPress, apoi reînnoiți cheile de securitate din wp-config.php.
  4. Căutați redirecționarea în patru locuri: .htaccess, fișierele PHP, baza de date, setările de adresă ale site-ului.
  5. Eliminați și accesul care a pus-o: conturi de administrator necunoscute, fișiere PHP în wp-content/uploads, module (pluginuri) de reinstalat sau de șters.
  6. Consultați raportul Probleme de securitate din Google Search Console și solicitați o examinare dacă site-ul apare acolo.

De ce nu vedeți redirecționarea

O redirecționare pusă în timpul unei spargeri își alege cui i se aplică. De cele mai multe ori o ocolește pe persoana care administrează site-ul, ca să rămână pe loc cât mai mult timp. Condițiile cele mai frecvente:

Un mesaj de la un client care spune „site-ul dumneavoastră mă trimite în altă parte” merită deci luat în serios, chiar dacă la dumneavoastră totul se afișează corect.

Reproduceți redirecționarea

Puneți-vă în locul vizitatorului care o întâlnește:

  1. Deschideți o fereastră de navigare privată, căutați numele firmei dumneavoastră într-un motor de căutare și dați clic pe rezultatul dumneavoastră.
  2. Repetați de pe un telefon, pe date mobile în loc de Wi-Fi.
  3. Notați adresa de destinație, ora și dispozitivul: aceste trei informații îi folosesc furnizorului de găzduire și, mai târziu, cererii de examinare adresate Google.

Dacă aveți acces la un terminal, această comandă cere pagina de pornire a site-ului prezentându-se ca un iPhone venit de pe Google:

Terminal (pe Windows, tastați curl.exe în loc de curl)
curl -s -i -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)" -e "https://www.google.com/" https://www.site-ul-dumneavoastra.com/

Citiți primele rânduri ale răspunsului. Un cod 301 sau 302 urmat de un rând Location: către o adresă necunoscută semnalează o redirecționare făcută de server: se află în .htaccess sau într-un fișier PHP. Un cod 200, în timp ce browserul este redirecționat, semnalează o redirecționare făcută în pagină, în JavaScript: se află de cele mai multe ori în baza de date sau într-un fișier al temei.

Înainte de a atinge site-ul: trei gesturi

  1. O copie completă în starea actuală. Fișiere și bază de date, datată, păstrată în afara serverului. Servește drept dovadă, drept punct de comparație și drept plasă de siguranță dacă o curățare scoate ceva util.
  2. Parolele, de pe un dispozitiv neinfectat. Contul de client la furnizorul de găzduire, conturile FTP sau SFTP, utilizatorul bazei de date (treceți noua parolă în wp-config.php, constanta DB_PASSWORD), apoi fiecare cont de administrator WordPress.
  3. Cheile de securitate. Înlocuiți cele opt rânduri de la AUTH_KEY la NONCE_SALT din wp-config.php cu un set nou, generat la https://api.wordpress.org/secret-key/1.1/salt/. Toate sesiunile deschise sunt închise, inclusiv cea a intrusului.
Cu WP-CLI, al treilea gest încape într-o singură comandă
wp config shuffle-salts

Unde se ascunde redirecționarea

1. Fișierul .htaccess

La rădăcina site-ului, și uneori într-un subdosar, .htaccess poate primi reguli de rescriere adăugate de intrus. Blocul pe care WordPress îl scrie singur este scurt, încadrat de # BEGIN WordPress și # END WordPress:

Blocul scris de un WordPress în limba română, pentru un site instalat la rădăcina domeniului
# BEGIN WordPress
# Directivele (liniile) între „BEGIN WordPress” și „END WordPress” sunt
# generate dinamic și ar trebui modificate numai prin filtrele WordPress.
# Toate modificările la directivele cuprinse între acești marcatori vor fi suprascrise.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

O regulă RewriteCond care testează %{HTTP_REFERER} (google, bing, facebook) sau %{HTTP_USER_AGENT} (android, iphone, mobile), urmată de o RewriteRule către o adresă externă, este redirecționarea. Modulele de cache și de securitate își scriu și ele propriile blocuri, marcate cu numele lor: comparați fiecare bloc cu lista modulelor dumneavoastră înainte de a-l elimina.

2. Fișierele PHP

WP-CLI compară fișierele nucleului WordPress și ale modulelor cu sumele de control publicate de WordPress.org și listează fiecare fișier modificat sau adăugat:

Terminal, la rădăcina site-ului
wp core verify-checksums
wp plugin verify-checksums --all

A doua comandă acoperă modulele distribuite prin directorul WordPress.org. Un modul cumpărat de la editorul său se compară cu o copie proaspătă, descărcată din contul dumneavoastră de la acesta. Este un caz frecvent: din cele 540 de site-uri WordPress ale IMM-urilor din măsurarea noastră din 1 septembrie 2026, 66 % poartă cel puțin un modul absent din directorul public.

Fără WP-CLI, două căutări fac o primă triere:

Terminal, la rădăcina site-ului
find . -name "*.php" -mtime -30
find wp-content/uploads -name "*.php"

Prima listează fișierele PHP modificate în ultimele 30 de zile, a doua fișierele PHP aflate în dosarul de fișiere media, unde sunt suspecte din principiu (unele module pun acolo un index.php gol, care este legitim). O dată de modificare se poate falsifica: un fișier vechi rămâne de examinat dacă se află în locul greșit.

Deschideți mai întâi wp-config.php, index.php de la rădăcină, functions.php și header.php ale temei active și dosarul wp-content/mu-plugins: modulele care se află acolo se încarcă automat și nu se dezactivează din administrare. Semnele de căutat: eval(, base64_decode(, gzinflate(, str_rot13(, șiruri lungi ilizibile sau window.location urmat de o adresă pe care nu o cunoașteți.

3. Baza de date

O redirecționare în JavaScript se strecoară ușor în conținutul paginilor sau în setări, unde niciun fișier nu o arată. WP-CLI caută un șir de caractere în toate tabelele WordPress:

Terminal
wp db search "<script"
wp db search "fromCharCode"

Fără WP-CLI, aceleași căutări se lansează în phpMyAdmin, în fila SQL:

SQL (înlocuiți wp_ cu prefixul definit în wp-config.php, variabila $table_prefix)
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<script%';
SELECT option_name FROM wp_options WHERE option_value LIKE '%<script%';

Unele rezultate sunt legitime: un instrument de măsurare a audienței, un banner de cookie-uri sau un widget pus de dumneavoastră. Ce nu corespunde cu nimic din ce ați instalat este de examinat, în special un script care construiește o adresă pornind de la coduri de caractere.

4. Setările de adresă și conturile

În Setări > Generale, „Adresă WordPress (URL)” și „Adresă site (URL)” trebuie să conțină domeniul dumneavoastră. Aceleași valori pot fi impuse în wp-config.php prin constantele WP_HOME și WP_SITEURL: verificați ambele locuri.

Terminal
wp option get home
wp option get siteurl
wp user list --role=administrator

Când constantele sunt definite, primele două comenzi returnează valoarea lor. Ultima listează administratorii, cu data înregistrării; în administrare, aceeași listă se obține din meniul Utilizatori, filtrată pe rolul Administrator. Un cont pe care nu îl recunoaște nimeni se șterge, atribuind conținuturile lui unui cont legitim.

Eliminați redirecționarea, apoi accesul care a pus-o

Ștergerea rândului care redirecționează oprește simptomul. Accesul folosit de intrus rămâne însă deschis cât timp nu a fost găsit, iar redirecționarea revine în zilele următoare. Ordinea care ține:

  1. Înlocuiți fișierele nucleului cu o copie nouă: ștergeți dosarele wp-admin și wp-includes, apoi rulați wp core download --skip-content --force, care rescrie nucleul fără să atingă modulele, temele și fișierele media. Comanda suprascrie fișierele existente, dar nu șterge fișierele adăugate: de aceea cele două dosare se șterg mai întâi, iar fișierele PHP necunoscute de la rădăcină se elimină manual.
  2. Reinstalați tema și fiecare modul din sursa lor oficială și ștergeți-le pe cele pe care site-ul nu le mai folosește, inclusiv pe cele dezactivate: fișierele lor rămân pe server.
  3. Eliminați fișierele PHP străine din wp-content/uploads, regulile adăugate în .htaccess și scripturile găsite în baza de date.
  4. Verificați sarcinile programate cu wp cron event list: o sarcină cu nume necunoscut poate pune codul la loc.
  5. Actualizați WordPress, tema și modulele.
  6. Refaceți testele de la început, de pe mai multe dispozitive și timp de mai multe zile.

Dacă site-ul păstrează date cu caracter personal (formulare, conturi de clienți, comenzi), notați ora la care ați constatat spargerea. În Uniunea Europeană, Regulamentul general privind protecția datelor (GDPR) prevede notificarea încălcării securității datelor cu caracter personal către autoritatea de supraveghere în termen de cel mult 72 de ore de la data la care ați luat cunoștință de aceasta, cu excepția cazului în care este puțin probabil să genereze un risc pentru drepturile și libertățile persoanelor fizice.

Google și ce văd vizitatorii dumneavoastră

Când Google detectează redirecționarea, Chrome poate afișa o pagină roșie „Site periculos” înainte de a deschide site-ul, iar Google poate scrie sub rezultatul dumneavoastră „Este posibil ca acest site să fie compromis”. Raportul Probleme de securitate din Google Search Console arată ce a fost detectat și pe ce adrese. După curățarea site-ului, cererea de examinare, trimisă din același raport, pornește verificarea.

Un site preluat și ținut în picioare, după redirecționare

O redirecționare eliminată lasă o întrebare: cine se ocupă de site după aceea? Simafri preia site-ul dumneavoastră WordPress, îl repune online pe o bază pe care o găzduim, o securizăm și o ținem la zi, apoi se ocupă de el lună de lună. Numele de domeniu și conținutul rămân ale dumneavoastră.

Vreau să îmi preluați site-ul

Întrebări frecvente

De ce site-ul meu redirecționează doar pe mobil?

Codul injectat citește identificatorul User-Agent al browserului și redirecționează doar telefoanele. Persoana care administrează site-ul, adesea de pe calculator, nu vede nimic. Testați de pe un telefon pe date mobile sau cu curl, trimițând identificatorul unui browser de mobil.

Este de ajuns reinstalarea WordPress pentru a elimina redirecționarea?

Reinstalarea nucleului rescrie fișierele WordPress, fără să le șteargă pe cele pe care un intrus le-a putut adăuga. Baza de date, tema, modulele și dosarul de fișiere media rămân neschimbate, iar acolo se află cel mai des redirecționarea și accesul intrusului. Nucleul nou este o etapă a curățării, de completat cu baza de date, modulele, conturile și parolele.

Site-ul a fost curățat, de ce revine redirecționarea?

Pentru că accesul care a servit la punerea ei este încă acolo: un cont de administrator adăugat, un fișier PHP ascuns printre fișierele media, o sarcină programată, un modul vulnerabil. Fiecare permite punerea codului la loc după curățare. Verificați conturile, dosarul wp-content/uploads, sarcinile programate și versiunile modulelor, apoi schimbați din nou parolele.

Cum aflu dacă Google a detectat redirecționarea?

Deschideți Google Search Console, apoi raportul Probleme de securitate: listează problemele detectate și exemple de adrese. Dacă site-ul nu este încă validat în Search Console, validarea printr-o înregistrare DNS acoperă tot domeniul.

Contactați-ne