In breve
Un redirect spam su WordPress si nasconde di solito in uno di questi punti: file .htaccess, wp-config.php o index.php, le opzioni siteurl e home del database, script iniettati in articoli e widget, falsi plugin o mu-plugins. Per ripulirlo devi controllarli tutti, perché spesso gli attaccanti ne usano più di uno, e poi chiudere la falla da cui sono entrati.
Un cliente ti scrive che, cliccando il tuo sito su Google, è finito su una pagina di scommesse. Tu provi e tutto funziona. È il comportamento tipico di un redirect spam su WordPress: il codice malevolo decide chi reindirizzare e chi no, proprio per restare nascosto il più a lungo possibile.
Perché il redirect colpisce solo alcuni visitatori?
Perché il codice malevolo controlla chi sta visitando il sito prima di agire. Di solito reindirizza solo chi non è loggato, chi arriva da un motore di ricerca, chi usa uno smartphone o chi visita il sito per la prima volta.
Queste condizioni si basano su informazioni che il browser invia a ogni richiesta: lo “user agent” (che dice se sei su iPhone, Android o computer) e il “referrer” (la pagina da cui arrivi, per esempio Google). Molti script impostano anche un cookie per reindirizzare ogni visitatore una sola volta, così chi ricarica la pagina per controllare non vede più nulla. Così il proprietario, che accede da amministratore e digita l’indirizzo a mano, non si accorge mai del problema.
Come verificare se c’è davvero un redirect?
Devi simulare il visitatore colpito: navigazione in incognito, arrivo da Google, smartphone con rete dati. Se sai usare il terminale, curl permette di fare la stessa prova in modo ripetibile.
Questo comando richiede la home come se arrivassi da Google con un iPhone e mostra solo le intestazioni della risposta. Se compare una riga location: verso un dominio che non conosci, il redirect è lato server:
curl -sI -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)" \
-e "https://www.google.com/" https://www.tuodominio.it/
Se le intestazioni sono normali, il redirect potrebbe essere fatto con JavaScript nella pagina. In quel caso scarica l’HTML e cerca script con domini esterni sconosciuti o codice offuscato (lunghe stringhe incomprensibili, eval, atob, String.fromCharCode):
curl -s -A "Mozilla/5.0 (Linux; Android 14)" \
-e "https://www.google.com/" https://www.tuodominio.it/ | grep -i "<script"
Se non usi il terminale, puoi partire dal check-up gratuito del sito: un controllo automatico dall’esterno, con il risultato in circa un minuto. Non sostituisce le prove da smartphone e in incognito, ma ti dà un primo quadro prima di metter mano ai file.
Dove si nasconde il redirect in WordPress?
I nascondigli più frequenti sono sei: il file .htaccess, i file PHP principali come wp-config.php e index.php, le opzioni siteurl e home nel database, il contenuto di articoli e widget, i file del tema e i plugin falsi o i mu-plugins. Spesso l’attaccante ne usa più di uno, così che pulirne uno non basti.
| Dove | Cosa cercare | Come intervenire |
|---|---|---|
.htaccess (radice e sottocartelle) |
Regole RewriteCond su user agent o referrer, RewriteRule verso domini esterni |
Ripristinare le regole standard di WordPress |
wp-config.php, index.php |
Righe aggiunte all’inizio o alla fine, include di file sconosciuti, codice offuscato |
Confrontare con l’originale e rimuovere il codice estraneo |
Opzioni siteurl e home |
Un dominio diverso dal tuo | Correggere il valore nel database |
| Articoli, pagine, widget | Tag <script> con domini esterni |
Rimuovere gli script dal database |
Tema (functions.php, header.php) |
Codice aggiunto in cima o in fondo | Reinstallare il tema da fonte ufficiale |
Plugin falsi e mu-plugins |
Plugin con nomi generici, file in wp-content/mu-plugins |
Eliminarli dopo averne salvato una copia |
Il file .htaccess
Sui server Apache e LiteSpeed il file .htaccess può reindirizzare i visitatori prima ancora che WordPress si avvii. Controlla quello nella radice del sito, ma anche quelli nelle sottocartelle, comprese wp-content e uploads. Le regole standard di WordPress sono documentate su developer.wordpress.org: tutto ciò che non riconosci va esaminato.
wp-config.php e i file del core
Il codice malevolo viene spesso aggiunto in cima a wp-config.php o a index.php, a volte dopo decine di righe vuote per non farsi notare aprendo il file. Per i file del core, il comando wp core verify-checksums di WP-CLI segnala quelli modificati.
Le opzioni siteurl e home
Nella tabella wp_options (il prefisso può variare) le righe siteurl e home dicono a WordPress qual è l’indirizzo del sito. Se contengono un altro dominio, tutto il sito viene reindirizzato. Controllale in phpMyAdmin o con WP-CLI:
wp option get siteurl
wp option get home
Verifica anche che in wp-config.php non siano state aggiunte le costanti WP_HOME o WP_SITEURL con valori estranei: se presenti, hanno la precedenza sul database.
Script iniettati in articoli e widget
Alcuni attacchi inseriscono un tag <script> in fondo a tutti gli articoli, o in un widget HTML. In phpMyAdmin puoi cercarli con una query di sola lettura, sostituendo il prefisso se diverso:
SELECT ID, post_title FROM wp_posts
WHERE post_content LIKE '%<script%';
Ripeti la ricerca nella tabella wp_options, dove sono salvati i widget e le impostazioni di molti temi e plugin. Attenzione: alcuni script legittimi (per esempio codici di analisi o moduli incorporati) compaiono anche qui, quindi valuta riga per riga.
Plugin falsi e mu-plugins
Capita spesso di trovare un plugin dal nome rassicurante, come “WP Core Security” o “Cache Helper”, che nessuno ha installato. Ancora più insidiosi sono i file in wp-content/mu-plugins: i plugin “must use” vengono caricati automaticamente, non si possono disattivare dalla bacheca e compaiono in un elenco separato. La loro funzione è descritta nella documentazione ufficiale. Se non hai mai usato questa cartella e contiene file, sono da esaminare.
Come ripulire WordPress da un redirect spam?
La pulizia sicura segue sempre lo stesso ordine: backup completo, cambio delle password, sostituzione dei file con copie originali, pulizia del database e chiusura della falla. Rimuovere solo la riga che causa il redirect non basta, perché di solito c’è una backdoor pronta a reinserirla.
- Fai una copia completa di file e database e conservala fuori dall’hosting, come prova.
- Cambia le password di hosting, FTP, database e amministratori, e rigenera le chiavi di sicurezza in
wp-config.php. - Sostituisci il core di WordPress con una copia della stessa versione scaricata da wordpress.org.
- Reinstalla plugin e temi da fonti ufficiali ed elimina quelli inutilizzati o sconosciuti.
- Ripristina un
.htaccesspulito e controlla i file nelle sottocartelle. - Pulisci il database: opzioni
siteurlehome, script in articoli, widget e opzioni, utenti sconosciuti. - Cerca e rimuovi file PHP in
wp-content/uploads. - Rifai le prove con
curle da smartphone, per qualche giorno, per essere sicuro che il redirect non torni.
Se il redirect ricompare dopo qualche ora o qualche giorno, la backdoor non è stata trovata oppure la falla è ancora aperta. A quel punto conviene fermarsi e seguire la procedura completa della guida su cosa fare quando un sito WordPress è hackerato.
Perché il redirect torna dopo la pulizia?
Torna perché la causa non è stata eliminata: una backdoor rimasta in un file o nel database, un’operazione pianificata (cron) che reinserisce il codice, oppure la stessa vulnerabilità sfruttata di nuovo. Le cause di ingresso più comuni sono plugin non aggiornati, password deboli e software scaricato da fonti non ufficiali.
Se sul sito ci sono temi o plugin premium ottenuti gratis da siti non ufficiali, sono i primi sospettati: ne spieghiamo i motivi in temi e plugin nulled: i rischi. Controlla anche se Google ha già segnalato il sito, perché i redirect verso siti ingannevoli portano spesso all’avviso rosso nel browser; in quel caso segui la guida su come rimuovere l’avviso “sito ingannevole”.
Il redirect continua a tornare?
Se hai già provato a pulire e il problema si ripresenta, serve una bonifica completa con individuazione della falla.
Domande frequenti
Perché il redirect si vede solo da smartphone?
Molti script leggono lo user agent del browser e reindirizzano solo i dispositivi mobili, dove il visitatore controlla meno l’indirizzo e dove il proprietario del sito naviga più di rado da amministratore. Per verificarlo usa uno smartphone con rete dati e in navigazione anonima.
Basta un plugin di sicurezza per togliere il redirect?
Uno scanner può aiutare a trovare file sospetti, ma non sempre individua codice nel database o regole in .htaccess. E se la falla resta aperta, il redirect torna: la pulizia va completata a mano e seguita da cambio password e aggiornamenti.
Il redirect spam danneggia il posizionamento su Google?
Sì, può farlo. Google può segnalare il sito come pericoloso o ingannevole, mostrare avvisi nei risultati e indicizzare pagine di spam create sul tuo dominio; dopo la pulizia serve una richiesta di revisione in Search Console.
Posso cercare il codice malevolo da solo?
Sì, se hai accesso a file e database e fai prima un backup completo. Se il sito gestisce ordini o dati di clienti, o se il redirect ritorna dopo la pulizia, è meglio affidarsi a un tecnico.
Perché il mio sito WordPress reindirizza a un altro sito?
Nella maggior parte dei casi è un’infezione: codice malevolo nel file .htaccess, in un plugin falso o nel database che manda i visitatori verso siti di spam o scommesse. Più raramente la causa è innocua, come un indirizzo del sito cambiato in Impostazioni > Generali o una regola lasciata da un plugin di redirect. Se la destinazione è un sito che non conosci, trattalo come un attacco.