Quando un sito WordPress reindirizza ad altro sito, la prima paura è l'attacco hacker. Spesso è proprio così, ma non sempre: anche un indirizzo sbagliato nelle impostazioni, un plugin di reindirizzamento dimenticato o un dominio scaduto possono portare i visitatori da un'altra parte. Per capire di che caso si tratta conta soprattutto a chi e quando succede: un redirect che colpisce solo chi arriva da Google, o solo chi naviga da cellulare, non è mai un caso, è codice messo lì apposta. In questa guida vediamo come riconoscere i diversi casi, come vedere il redirect anche quando a te non si mostra e dove cercarne la causa, prima di toglierlo.
Vai direttamente a: Riconoscere il caso · Vederlo con i tuoi occhi · Cause da attacco · Cause innocue · Fermarlo
In breve
- Se il redirect scatta solo da cellulare, solo da Google o solo alla prima visita, il sito è quasi certamente stato violato.
- Se porta al tuo vecchio dominio o gira in tondo, di solito è un'impostazione: indirizzi del sito, plugin, HTTPS o cache.
- Per vederlo davvero usa una finestra anonima, un telefono con la connessione dati o il comando curl.
- Le cause da attacco stanno quasi sempre in .htaccess, database, file del tema o plugin finti.
- Togliere il redirect non basta: se era un attacco, va chiusa anche la porta da cui sono entrati.
Ogni visita dirottata è un cliente che non torna. Troviamo la regola che li manda altrove, ripuliamo il sito e chiudiamo la porta da cui sono entrati, di solito entro 24 ore.
Richiedi un intervento rapidoRiconoscere il caso: a chi e quando succede
La stessa scena, il sito che porta altrove, può avere cause molto diverse. Il dettaglio che fa la differenza è chi vede il redirect e in quali momenti:
| Cosa succede | Causa più probabile | Attacco? |
|---|---|---|
| Porta sempre, per tutti, a un sito che non conosci | regola aggiunta in .htaccess, indirizzi del sito cambiati nel database, plugin malevolo | Quasi sempre |
| Succede solo da cellulare | regola che legge il tipo di dispositivo, in .htaccess o in uno script della pagina | Sì |
| Succede solo arrivando da Google | codice che controlla da dove arriva il visitatore | Sì |
| Solo alla prima visita, poi più | script che lascia un cookie per non ripetersi e non farsi notare | Sì |
| Porta al tuo vecchio dominio | indirizzi del sito rimasti quelli di prima dopo un trasloco, regola di un plugin di redirect | Di solito no |
| Il browser dice «troppi reindirizzamenti» | conflitto tra HTTPS, www e impostazioni di WordPress, di Cloudflare o di un plugin SSL | No |
| Porta a una pagina del registrar o di parcheggio | dominio scaduto o DNS modificati | Raramente |
Se ti riconosci in una delle prime quattro righe, tratta il sito come compromesso: oltre a togliere il redirect bisogna capire da dove sono entrati, come spiega la guida al ripristino di un sito WordPress hackerato.
Vedere il redirect con i tuoi occhi
Il codice malevolo è costruito per non farsi vedere da te: chi è collegato a WordPress come amministratore, chi ha già visitato il sito o chi scrive l'indirizzo a mano spesso non nota niente, mentre i clienti vengono dirottati. Per metterti nei panni di un visitatore qualunque:
- Apri una finestra anonima e cerca il nome del tuo sito su Google, poi clicca sul risultato invece di scrivere l'indirizzo.
- Prova da un telefono con la connessione dati, non con il Wi-Fi dell'ufficio: certi codici si spengono per gli indirizzi da cui l'amministratore si è già collegato.
- Guarda la scheda Rete degli strumenti per sviluppatori del browser (tasto F12), con l'opzione che conserva il registro tra una pagina e l'altra («Preserve log»): vedrai la catena dei passaggi e quale risposta ti manda altrove.
- Usa curl, che mostra le risposte del server senza eseguire gli script della pagina.
Con curl confronta una richiesta normale con una che finge di essere un iPhone arrivato da Google:
curl -sI https://www.tuosito.it/
curl -sI -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)" \
-e "https://www.google.com/" https://www.tuosito.it/
Se solo la seconda risposta contiene una riga location: verso un dominio che non è il tuo, il redirect avviene sul server, in .htaccess, in un file PHP o nella configurazione, e si attiva per chi arriva da Google col telefono. Se invece le risposte sono pulite ma il browser viene comunque dirottato, il redirect parte da uno script della pagina: cercalo nel codice sorgente.
curl -s -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)" https://www.tuosito.it/ \
| grep -iE "window\.location|document\.location|atob\(|eval\(|fromCharCode"
Le cause da attacco e dove cercarle
Quando il redirect è opera di qualcuno entrato nel sito, il codice si nasconde quasi sempre in uno di questi punti. Conviene controllarli tutti: chi attacca ne usa spesso più di uno, e se ne togli uno solo il redirect ricompare.
Il file .htaccess
È il primo posto da guardare, perché lavora prima ancora di WordPress. Una regola malevola tipica controlla il dispositivo o la provenienza del visitatore e lo spedisce altrove; somiglia a questa:
# esempio di regola malevola: chi arriva da Google col telefono finisce altrove
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (android|iphone|mobile) [NC]
RewriteCond %{HTTP_REFERER} (google|bing|yahoo) [NC]
RewriteRule ^(.*)$ https://sito-spam.example/ [R=302,L]
WordPress scrive le sue regole tra le righe # BEGIN WordPress e # END WordPress: tutto quello che sta fuori e che non hai aggiunto tu, o il tuo hosting, va guardato con sospetto. Controlla anche gli eventuali .htaccess nelle sottocartelle, per esempio in wp-content/uploads.
Il database
Qui le cose da verificare sono due. La prima sono gli indirizzi del sito: se nelle opzioni siteurl e home compare un dominio estraneo, tutto il sito porta lì. La seconda sono gli script iniettati nel contenuto di articoli, pagine e widget, che fanno partire il redirect dal browser del visitatore. Con WP-CLI bastano tre comandi:
wp option get siteurl
wp option get home
wp db search "sito-spam.example" --all-tables-with-prefix
Se non sai verso quale dominio porta, cerca pezzi come <script o atob( nelle tabelle dei contenuti e delle opzioni, da phpMyAdmin o con lo stesso comando, e guarda i risultati uno per uno: anche gli script legittimi, come quelli delle statistiche, compariranno nell'elenco.
I file del tema e i plugin finti
header.php, footer.php e functions.php del tema attivo sono i file più presi di mira: basta qualche riga di JavaScript offuscato, illeggibile, in cima o in fondo al file per dirottare i visitatori. Occhio anche ai plugin che non ricordi di aver installato, spesso con nomi rassicuranti che imitano quelli veri, e alla cartella wp-content/mu-plugins: i plugin che stanno lì si caricano da soli, non si possono disattivare dalla bacheca e compaiono in una scheda separata dell'elenco dei plugin, che quasi nessuno apre.
Il server e le operazioni pianificate
Se il sito è su un VPS, il redirect può stare anche fuori dalla cartella del sito: nella configurazione di Nginx o di Apache, oppure in un'operazione pianificata che riscrive i file ogni ora. È il motivo per cui certi redirect tornano dopo ogni pulizia. Controlla le operazioni pianificate di WordPress con wp cron event list e quelle del server con crontab -l, per ogni utente.
Le cause innocue che sembrano un attacco
Non tutti i reindirizzamenti sono opera di qualcuno. Questi casi spaventano allo stesso modo, ma si risolvono con una correzione nelle impostazioni:
- Indirizzi del sito sbagliati. In Impostazioni > Generali, «Indirizzo WordPress (URL)» e «Indirizzo sito (URL)» devono contenere il tuo dominio attuale, con https e senza barra finale. Dopo un trasloco o un cambio di dominio capita che restino quelli vecchi, e il sito rimanda lì. Se non riesci più a entrare per correggerli, puoi fissarli in wp-config.php con WP_HOME e WP_SITEURL, come spiega la documentazione ufficiale.
- Plugin di reindirizzamento. Redirection, i redirect di Rank Math o di Yoast SEO Premium, un plugin di manutenzione o di pagina «in arrivo» possono contenere una regola dimenticata che manda altrove tutto il sito, o una sola pagina.
- HTTPS e www. Se il server forza https e WordPress è impostato su http, o se la versione con www e quella senza si rimandano a vicenda, il browser si arrende con «troppi reindirizzamenti». Spesso c'entrano le impostazioni SSL di Cloudflare o un plugin per HTTPS: per la parte del certificato c'è la guida su SSL non valido e mixed content.
- Cache del browser. I reindirizzamenti permanenti (301) vengono ricordati dal browser: anche dopo averli tolti, il tuo computer può continuare a eseguirli. Prova in una finestra anonima, o svuota la cache, prima di concludere che la correzione non ha funzionato.
- Regole di Cloudflare o della CDN. Le regole di reindirizzamento impostate nel pannello di Cloudflare, o del servizio che sta davanti al sito, agiscono prima che la richiesta arrivi al server: se il sito è pulito ma il redirect resta, guarda lì.
- Dominio scaduto o DNS cambiati. Se finisci su una pagina di parcheggio piena di pubblicità, controlla la scadenza del dominio e i record DNS dal pannello del registrar. Se i DNS li ha cambiati qualcun altro, cambia subito la password di quell'account e attiva la verifica in due passaggi.
Fermare il redirect, passo per passo
- Salva una copia di file e database prima di modificare qualsiasi cosa: se togli la riga sbagliata, puoi tornare indietro.
- Riconosci il caso con la tabella e con le prove qui sopra: sapere se scatta da cellulare, da Google o per tutti dice già dove cercare.
- Rinomina il file .htaccess e salva di nuovo i permalink: se il redirect sparisce, la causa era lì. Poi rimetti solo le regole che riconosci.
- Controlla gli indirizzi del sito nel database e, se serve, correggili o fissali in wp-config.php.
- Cerca script e domini estranei nel database, nei file del tema e nella cartella mu-plugins.
- Disattiva i plugin uno alla volta, o rinomina per un momento la cartella plugins, per escludere quelli di redirect e quelli finti.
- Se era un attacco, chiudi la falla: elimina gli amministratori sconosciuti, cambia tutte le password e aggiorna WordPress, temi e plugin.
- Controlla Google: se Search Console segnala problemi di sicurezza, chiedi la revisione dopo la pulizia.
Risolvere i problemi più comuni
Ho pulito .htaccess ma il redirect torna dopo qualche ora
Il più frequenteQualcosa lo riscrive: un file PHP nascosto, spesso nella cartella dei caricamenti, oppure un'operazione pianificata di WordPress o del server. Finché quel file resta al suo posto ogni pulizia dura poco: cerca i file PHP in wp-content/uploads e le operazioni pianificate che non riconosci, poi pulisci di nuovo .htaccess.
Il redirect parte solo da alcune pagine
Di solito lo script è stato inserito nel contenuto di quei singoli articoli, o in un widget che compare solo lì. Cerca nel database il dominio verso cui porta e ripulisci le voci che lo contengono; poi controlla gli utenti, perché qualcuno ha scritto quel contenuto.
Non riesco più a entrare in wp-admin: porta altrove anche lì
Gli indirizzi del sito nel database sono stati cambiati. Correggi siteurl e home da phpMyAdmin, oppure aggiungi a wp-config.php queste due righe con il tuo dominio: rientri nella bacheca e da lì puoi sistemare il resto.
define( 'WP_HOME', 'https://www.tuosito.it' );
define( 'WP_SITEURL', 'https://www.tuosito.it' );
Non fermarti al primo redirect toltoChi entra in un sito di solito lascia più di una porta aperta. Se il redirect era opera di un attacco e lo togli senza trovare il punto d'ingresso, nel giro di pochi giorni il sito torna come prima.
Conclusioni
Un sito WordPress che reindirizza ad altro sito non è sempre stato hackerato, ma il modo in cui lo fa racconta molto. Se colpisce solo chi arriva da Google, chi naviga da cellulare o chi entra per la prima volta, è codice messo lì per non farsi scoprire, e va cercato in .htaccess, nel database, nel tema e nei plugin prima di chiudere la falla che l'ha fatto entrare. Se invece porta al vecchio dominio o gira in tondo tra http e https, quasi sempre basta correggere le impostazioni. In entrambi i casi la regola è la stessa: prima capire, poi togliere, con una copia di sicurezza in mano.
La cerchiamo noi in file, database e server, togliamo il redirect e mettiamo il sito in sicurezza, da remoto in tutta Italia o di persona a Roma.
Richiedi assistenza ora