Pages de pharmacies ou de casinos indexées sur votre domaine
Pharmacies, casinos, prêts : ces titres dans `site:` ne sont pas un bug de traduction. Un générateur PHP, un dossier HTML ou du cloaking les fabrique. Coupez la source, répondez 410, retirez le préfixe. N'achetez pas de « nettoyage SEO » tant que le script tourne.
Générateur PHP, dossier HTML ou cloaking. Coupez la source, répondez 410, retirez le préfixe. N'achetez pas de « nettoyage SEO » tant que le script tourne.
Reconnaître le spam déjà indexé
Tapez `site:votre-domaine.fr` et parcourez les titres. Caractères asiatiques, « cheap viagra », « online casino », chemins du type `/rx/`, `/jp/`, `/news/a8f3-`. Comparez le nombre de résultats à votre vrai plan de site. Un écart de 1 à 50 n'est pas « Google qui a tout pris » : c'est un générateur.
Ces pages peuvent répondre 200 avec un vrai HTML, ou n'exister que pour Googlebot. Vous, connecté, voyez la home. C'est pour ça que le gérant jure que « le site est normal » pendant que l'index est un supermarché de pharmacies.
Exportez une vingtaine d'URL. Elles servent à classer la mécanique et à tester le 410 plus tard. Le guide pages spam pose le cadre ; ici on va jusqu'aux fichiers.
Trois mécaniques, pas une
Un fichier PHP à la racine ou dans un dossier anodin (`wp-includes/certificates/`, `cgi-bin/`) fabrique les pages à la volée selon le chemin. Aucun fichier HTML par URL : tout est virtuel. Couper 200 URL à la main ne sert à rien.
Un dossier de vrais HTML déposés (`/wp-content/uploads/2023/11/shop-xx.html`, parfois des milliers). Là, il y a des fichiers. On les retire après copie, on pose un 410 sur le préfixe.
Le cloaking : `functions.php`, un mu-plugin, une option `wp_options` qui injecte, ou un `.htaccess` qui réécrit vers un script si le user-agent contient Google. Vous voyez le thème ; Google voit le casino. L'inspection d'URL en est la preuve.
- Virtuel : un PHP, des milliers d'URL.
- Physique : un dossier, des HTML.
- Cloaking : deux HTML selon qui demande.
Trouver le générateur avant les URL
Cherchez les PHP dont la date ne correspond pas au cœur. Noms courts : `wp-core.php`, `radio.php`, `wp-tmp.php`, `xmlrpc.php` hors de sa place (une copie dans `uploads`). Les mu-plugins : tout fichier dans `wp-content/mu-plugins/` que vous n'avez pas posé. WordPress les charge sans activation.
Dans `uploads`, les doubles extensions : `image.php.jpg`, `file.jpg.php`, `.php.` avec un espace. Un `.htaccess` local qui force le PHP à s'exécuter sur `.jpg`. Après retrait, interdisez l'exécution PHP dans ce dossier — voir PHP dans uploads.
Les rewrites : `RewriteRule` vers un script, `ErrorDocument 404` détourné vers un générateur (404 qui devient 200 spam). Un `installer.php` Duplicator oublié a parfois servi à poser tout ça. Dates FTP et access.log : les hits sur `/cheap-viagra` pointent le script.
410, pas un robots.txt de panique
Une fois le générateur coupé, les URL doivent cesser de servir du 200. Le 410 (gone) dit à Google : cette ressource n'existe plus, oubliez-la. Un 404 marche aussi, plus lentement. Un 301 vers la home dilue et garde le spam dans le graphe interne.
`Disallow: /` dans robots.txt n'enlève pas l'infection et enterre vos vraies pages. C'est une « défense » d'attaquant ou une panique. Rétablissez un robots raisonnable. Détail : robots.txt bloque Googlebot.
Si le préfixe est net (`/jp/`, `/rx/`), une règle serveur 410 sur ce préfixe est plus propre que 8 000 retraits manuels. Les pages légitimes restent en 200.
Retrait de préfixe dans Search Console
Outil de retrait : préfixe du dossier pirate, temporaire, le temps que le 410 fasse son travail. Pas tout le domaine. Soumettre le sitemap légitime seul ; retirer le sitemap pirate — et l'utilisateur qui l'a soumis. Voir sitemap pirate.
Les canonicals détournées vers un domaine pharma font consolider le jus ailleurs. Corrigez-les en base ou dans le plugin SEO, puis demandez la réindexation des templates. Canonicals piratées.
N'achetez pas un pack « 500 désindexations » tant que `eval(base64` tourne encore. Google réindexera le lendemain.
Ce que le cloaking cache à l'admin
Un cookie d'administration, une IP de bureau, un plugin « hide login » : le script vous reconnaît et sert le vrai thème. D'où l'importance du test déconnecté, mobile, clic depuis Google. L'inspection d'URL n'a pas votre cookie.
Le HTML « vu par Google » contient souvent le domaine affilié, un iframe, ou un bloc de liens. Gardez-le pour le constat et le réexamen. C'est aussi ce qui oriente la recherche du fichier : un nom de domaine unique se greppe sur le serveur.
Pourquoi le « pack SEO » échoue
Un prestataire qui propose de « nettoyer l'index » sans accès fichiers vend du retrait d'URL. Tant que le PHP vit, c'est un seau percé. Le bon ordre : copie, entrée fermée, 410, puis SEO.
Changer de domaine pour fuir les pharmacies perd l'historique et recommence : le générateur est dans les fichiers, pas dans le DNS. Site disparu de Google explique pourquoi recréer un nom n'est pas une sortie.
Le guide WordPress et backdoor PHP sont le vrai « pack » : trouver la porte, pas polir les titres.
Vérifier que ça ne repousse pas
Rejouez `site:` à J+2, J+7, J+30. Une nouvelle URL asiatique au jour 6 = backdoor encore là. Surveillez aussi les dates de fichiers dans `mu-plugins` et la racine.
Safe Browsing est une autre horloge. Des pages pharmacies indexées n'impliquent pas toujours l'écran rouge Chrome — et l'inverse. Ne déposez un réexamen blacklist que s'il y a vraiment une alerte, pas « pour aider l'index ».
Pour un tri générateur / dossier / cloaking, déclarez le site. Le prix s'affiche avant l'accès serveur.