Une redirection malveillante se cache dans .htaccess, dans index.php, dans les options siteurl et home de WordPress, dans un JavaScript injecté ou dans une extension. Elle épargne souvent l’administrateur et ne s’active que depuis Google ou sur mobile. Testez avec curl -I en changeant l’agent utilisateur et le référent, puis inspectez ces cinq endroits.
Le piège de ces redirections est leur discrétion. Le pirate programme son code pour qu’il ne se déclenche que lorsque le visiteur arrive depuis un moteur de recherche, utilise un téléphone, ne s’est pas connecté à l’administration ou visite pour la première fois. Le propriétaire ouvre son site directement, tout va bien, et ses clients se plaignent pourtant. C’est ce qu’on appelle du cloaking : le site montre une chose à vous et une autre à certains visiteurs.
Toutes les redirections ne sont pas des piratages : une règle d’hébergeur, une extension de redirection ou une migration mal terminée produisent le même effet. L’étape 3 sert à écarter ces causes avant de chercher plus loin.
Reproduire la redirection dans les conditions du visiteur
Ouvrez le site en navigation privée, depuis un téléphone en 4G ou 5G sans passer par votre wifi, puis en cliquant sur un résultat de Google après une recherche site:votredomaine.fr. Notez ce qui change : l’adresse de destination, la page concernée, l’appareil. Si la redirection n’apparaît que dans l’un de ces cas, vous êtes probablement face à du cloaking.
Voir la redirection sans navigateur avec curl
Un navigateur masque les étapes. Avec curl -I https://votredomaine.fr/, observez la ligne Location: de la réponse. Répétez avec un agent utilisateur mobile : curl -I -A "Mozilla/5.0 (Linux; Android 13; Pixel 7) Mobile" https://votredomaine.fr/. Puis avec un référent Google : curl -I -e "https://www.google.com/" https://votredomaine.fr/. Si un test renvoie un code 301 ou 302 vers un domaine inconnu, les autres non, vous avez la preuve et la condition de déclenchement. Ajoutez -L pour suivre toute la chaîne.
Écarter une redirection légitime
Avant d’accuser un pirate, vérifiez les règles que vous ou votre hébergeur avez posées : extension de redirection, panneau d’hébergement (cPanel, Plesk), règles de page du CDN, enregistrement DNS qui pointe vers un autre serveur, ancienne migration. Une redirection légitime est connue de quelqu’un dans l’équipe ; si personne ne la reconnaît, poursuivez.
Inspecter .htaccess dans tous les dossiers
Sur Apache, ouvrez .htaccess à la racine puis dans les sous-dossiers, en particulier wp-content et uploads. Cherchez les blocs RewriteCond qui testent HTTP_REFERER ou HTTP_USER_AGENT avec des mots comme google, bing, android ou mobile, suivis d’une RewriteRule vers une adresse que vous ne reconnaissez pas. Le pirate place souvent ces lignes tout en haut ou après des centaines de lignes vides, pour qu’elles échappent à une lecture rapide. Sauvegardez le fichier, puis retirez le bloc suspect.
Contrôler index.php, wp-config.php et les fichiers du thème
Ouvrez index.php à la racine, wp-config.php, puis header.php et functions.php du thème actif. Un code étranger commence souvent avant la balise <?php légitime, ou utilise eval, base64_decode, gzinflate. grep -rlE "eval\(base64_decode|document\.location|window\.location" wp-content en propose une première liste, qui contient aussi des faux positifs : lisez avant de supprimer. Comparez le thème avec la version officielle ou avec une sauvegarde.
Vérifier les options et le contenu dans la base de données
Dans WordPress, Réglages > Général affiche l’adresse de WordPress et celle du site. Si l’administration est inaccessible, wp option get siteurl et wp option get home donnent les valeurs enregistrées dans wp_options ; une valeur étrangère doit être corrigée avec wp option update. Cherchez ensuite un script injecté dans les contenus avec wp db search "<script". Les widgets de texte, les en-têtes personnalisés et les options des thèmes servent souvent de cache à un JavaScript de redirection.
Examiner les extensions et le dossier mu-plugins
Lancez wp plugin list et wp plugin verify-checksums --all, puis listez wp-content/mu-plugins, que l’administration affiche mal : une extension obligatoire malveillante s’y charge sans être activée. Supprimez les extensions que vous n’utilisez pas, réinstallez les autres depuis leur source officielle, et regardez les extensions modifiées récemment avec find wp-content/plugins -type f -mtime -14.
Nettoyer, vider les caches et changer les accès
Une fois les causes retirées, videz tous les caches : extension de cache, cache du serveur, CDN et navigateur. Retestez avec les trois commandes curl. Une redirection cachée implique que quelqu’un a écrit sur votre serveur : changez tous les mots de passe et clés, comme le décrit le guide pour nettoyer le malware d’un site, et cherchez comment il est entré.
Questions fréquentes
Pourquoi mon site ne redirige que depuis Google ou sur mobile ?
Le code malveillant teste l’origine du visiteur : référent venant d’un moteur de recherche, agent utilisateur d’un téléphone. Il reste silencieux pour l’administrateur et pour qui tape l’adresse directement, afin de durer plus longtemps. Reproduisez les conditions avec curl -I, en modifiant l’agent utilisateur et le référent.
Comment trouver d’où vient la redirection de mon site WordPress ?
Cherchez dans cet ordre : .htaccess, index.php et wp-config.php, les fichiers du thème, les options siteurl et home, les scripts injectés dans la base, puis les extensions, dont mu-plugins. Un curl -I indique d’abord si la redirection est faite par le serveur ou par du JavaScript dans la page.
Une redirection vers un site inconnu prouve-t-elle un piratage ?
Pas forcément. Une extension de redirection, une règle de l’hébergeur ou un DNS mal configuré donnent le même effet. En revanche, une redirection conditionnelle que personne ne reconnaît, avec des fichiers récemment modifiés, est un signe fort de compromission du site.
Une redirection piratée peut-elle nuire à mon référencement ?
Oui. Google peut détecter la différence entre ce qu’il voit et ce que voient les visiteurs, signaler le site comme piraté, puis afficher un avertissement. Nettoyez, puis consultez le guide sur le blacklistage par Google pour demander le retrait de l’avertissement.