Mon site Web a été touché par l'attaque de spam pharma qui a créé des centaines d'URL, qui contiennent toutes les 5 derniers caractères -1234.pdf
.
Pour que Google et les autres moteurs de recherche les suppriment plus rapidement, je voudrais retourner ces pages avec un code de statut 410/GONE, existe-t-il un moyen plus simple de le faire dans .htaccess
autre que répertorier toutes les URL et définir RewriteRule
s pour chacune (un processus qui prendrait des heures!)
Pour servir un 410 Gone pour toutes les URL se terminant par la chaîne littérale -1234.pdf
alors vous pouvez utiliser la directive mod_rewrite suivante en haut de votre .htaccess
fichier:
RewriteEngine On
RewriteRule -1234\.pdf$ - [G]
Ou pour rejeter toute URL se terminant par -NNNN.pdf
où NNNN
est un nombre d'au moins 4 chiffres, vous pouvez changer le modèle RewriteRule
en quelque chose comme : -\d{4,}\.pdf$
.
mais les URL renvoient toujours un 404.
Dans le cas où le serveur a défini un 410 ErrorDocument personnalisé et remplace le code de réponse HTTP, définissez ce qui suit en haut de votre .htaccess
fichier (assurez-vous que vous n'avez pas défini vous-même un 410 ErrorDocument
personnalisé plus tard dans le .htaccess
fichier ou configuration du serveur):
ErrorDocument 410 default
PDATE: nous avons également d'autres URLs contenant du spam qui ont la chaîne "stmap_9874100.html" (où les trois derniers chiffres sont toujours différents), une requête similaire peut-elle être écrite pour définir ces URL à 410 aussi?
Oui, vous pouvez ajouter une autre directive similaire à celle précédente:
RewriteRule stmap_9874\d{3}\.html$ - [G]
Explication du modèle RewriteRule
(expression régulière/expression régulière) et de la directive:
stmap_9874
- Ces caractères correspondent littéralement (n'importe où dans le chemin URL).
\d
est une classe de caractères abrégée représentant n'importe quel chiffre (0-9) et \d{3}
est exactement 3 d'entre eux.
\.
correspond à un point littéral, sinon, un point dans l'expression régulière correspond à n'importe quel caractère (sauf les nouvelles lignes).
html
- Ces caractères correspondent littéralement.
$
est une "ancre" qui représente la fin de la chaîne. Cette chaîne de caractères doit donc apparaître à la fin du chemin URL.
-
(trait d'union) - ne fait pas partie de l'expression rationnelle, c'est le deuxième argument de la directive RewriteRule
. Ceci est juste un "espace réservé" indiquant aucune substitution . L'URL n'est pas réécrite/redirigée vers autre chose.
L'indicateur G
(abréviation de R=410
) entraîne une réponse 410 Gone. (L'indicateur L
n'est pas requis ici, car il est implicite lors de la spécification d'un code de réponse hors de la plage 3xx (et 2xx).)