web-dev-qa-db-fra.com

Robots.txt avec uniquement les directives Disallow et Allow n'empêche pas l'analyse des ressources non autorisées

J'ai un fichier robots.txt:

User-agent:*
Disallow:/path/page
Disallow:/path/
Allow:/

Le chemin non autorisé est toujours en train d'être exploré.

J'ai cherché ce problème et ce qu'ils ont dit, l'ordre de priorité dans google n'a pas d'importance. Donc techniquement, le refus devrait fonctionner, mais maintenant je me demande si c'est parce que Allow:/ le remplace?

5
arthur

Mettre votre page par le testeur de Google robots.txt révèle deux problèmes:

  1. Vous n'avez pas de ligne User-agent donc vos règles ne s'appliquent pas à aucun robot : enter image description here
  2. Une fois que vous avez inséré la ligne User-agent, la ligne Allow annule la valeur interdite: enter image description here

Le fichier robots.txt correct serait:

User-agent: *
Disallow: /path/page
Disallow: /path/

NE PAS utiliser Allow:. Autoriser l'exploration est la valeur par défaut. Vous devez uniquement inclure les éléments que vous ne voulez pas explorer.

Incluez la ligne User-Agent: pour indiquer qu'elle s'applique à tous les robots. Sinon, cela ne s'appliquera à aucun.

Je ne pense pas que le fait d'avoir un espace après le côlon soit important, mais tous les exemples que je vois l'ont.

Je devrais également ajouter que robots.txt s’adresse uniquement aux robots qui choisissent d’y obéir. Les robots des moteurs de recherche tels que Googlebot devraient obéir au fichier robots.txt , mais tous les autres robots ne le feront pas.

5

Comme déjà mentionné, la directive Allow: est dans ce cas superflue. L'action par défaut consiste à autoriser toutes les analyses. Par conséquent, la mention explicite de Allow: / (c'est-à-dire, autoriser tout) est entièrement redondante.

Cependant, contrairement à ce qui a été suggéré, la directive Allow: / ne vous causerait pas non plus de problèmes. La directive Allow: / ne "remplacera" pas les autres directives Disallow:, car elle est la moins spécifique possible, indépendamment de l'ordre apparent .

l'ordre de priorité dans Google n'a pas d'importance.

Oui, en quelque sorte. Vous voulez dire que "l'ordre des directives n'a pas d'importance". Il existe toujours un ordre de priorité (sauf si vous utilisez des "caractères génériques", auquel cas il est officiellement "indéfini"). C'est pourquoi la directive Allow: / ne remplace pas les directives plus spécifiques Disallow: qui la précèdent. Google définit l'ordre de priorité :

pour autoriser et interdire les directives, , la règle la plus spécifique basée sur la longueur de l'entrée [path] l'emportera sur la règle la moins spécifique (la plus courte) .

Et ceci est confirmé en utilisant le testeur robots.txt de Google , lors du test d'un chemin non autorisé, par exemple. /path/page:

Google's robot.txt Tester - Disallow

C’est au moins comment Googlebot et Bingbot fonctionnent (le chemin le plus spécifique gagne). Cependant, certains (anciens) robots utiliseraient une règle de "premier match". Donc, pour une compatibilité optimale, il est recommandé d’inclure d’abord les directives Allow:. Référence: Quelle est la bonne façon de gérer les autorisations et les interdire dans le fichier robots.txt?

De plus, étant donné que robots.txt correspond au préfixe , la directive Disallow: /path/page est également superflue, car Disallow: /path/ bloque également /path/page. Donc, en résumé, votre fichier robots.txt uniquement a besoin de la directive one Disallow, les autres sont tout simplement superflus mais ne causeront aucun préjudice:

User-agent: *
Disallow: /path/

Les espaces avant le chemin sont entièrement facultatifs, bien que, comme indiqué dans la réponse de Stephen, il soit beaucoup plus courant de le voir et de le rendre plus lisible.

La seule fois où vous auriez besoin d'une directive Allow: si vous devez créer une exception et autoriser une URL qui serait sinon bloquée par une directive Disallow: . par exemple. Si vous voulez autoriser /path/foo dans le fichier robots.txt ci-dessus, vous devez inclure explicitement la directive Allow: /path/foo quelque part dans le groupe.

Le chemin non autorisé est toujours en train d'être exploré.

Si tel est toujours le cas, il se passe autre chose ...

  • Avez-vous d’autres directives dans votre fichier robots.txt? Testez l'URL dans le testeur robot.txt de Google.
  • Quand le fichier robots.txt actuel a-t-il été implémenté? Google prélève uniquement les modifications apportées au fichier robots.txt tous les jours. Dans GSC, vous pouvez identifier la version actuellement utilisée par Googlebot.
  • Comme Stephen l'a déjà souligné, robots.txt n'est honoré que par les "bons robots". De nombreux (mauvais) robots l'ignoreront tout simplement et exploreront vos URL sans se soucier. Vous pouvez vérifier dans vos journaux d'accès si les "bons" bots sont toujours en train d'explorer ces URL non autorisées.
2
MrWhite

Votre question ne précise pas quel type de site vous avez. Si c'est un SPA, cela expliquerait les problèmes que vous rencontrez. Le fichier robots.txt ne semble pas traiter efficacement les SPA et d’autres solutions doivent être recherchées.

0
Jeffrey Levy