Qual é a maneira correta de lidar com Permitir e Não Permitir no robots.txt?

8

Eu executo um rastreador da Web em larga escala. Nós tentamos muito operar o rastreador dentro dos padrões da comunidade aceitos, e isso inclui o respeito ao robots.txt. Recebemos muito poucas reclamações sobre o rastreador, mas quando fazemos a maioria, tratamos do tratamento do robots.txt. Na maioria das vezes, o Webmaster do site cometeu um erro no seu robots.txt e destacamos o erro. Periodicamente, porém, encontramos áreas cinzentas que envolvem o manuseio de Allowe Disallow.

A página robots.txt não cobre Allow. Vi outras páginas, algumas das quais dizem que os rastreadores usam uma regra de "primeira correspondência" e outras que não especificam. Isso leva a alguma confusão. Por exemplo, a página do Google sobre robots.txt costumava ter este exemplo:

User-agent: Googlebot
Disallow: /folder1/
Allow: /folder1/myfile.html

Obviamente, uma regra de "primeira correspondência" aqui não funcionaria porque o rastreador veria Disallowe desapareceria, nunca rastreando o arquivo que era especificamente permitido.

Nós estamos livres se ignorarmos todas as Allowlinhas, mas podemos não rastrear algo que possamos rastrear. Sentiremos falta das coisas.

Tivemos um grande sucesso verificando Allowprimeiro e depois verificando Disallow, a ideia Allowpretendia ser mais específica do que Disallow. Isso ocorre porque, por padrão (ou seja, na ausência de instruções em contrário), todo o acesso é permitido. Mas então nos deparamos com algo assim:

User-agent: *
Disallow: /norobots/
Allow: /

A intenção aqui é óbvia, mas isso Allow: /fará com que um bot que verifique Allowprimeiro pense que pode rastrear qualquer coisa no site.

Mesmo isso pode ser contornado neste caso. Podemos comparar a correspondência Allowcom a correspondência Disallowe determinar que não temos permissão para rastrear nada em / norobots /. Mas isso se decompõe diante dos curingas:

User-agent: *
Disallow: /norobots/
Allow: /*.html$

A questão, então, é que o bot pode rastrear /norobots/index.html?

A regra "primeira correspondência" elimina toda ambiguidade, mas muitas vezes vejo sites que mostram algo como o antigo exemplo do Google, colocando o mais específico Allow depois do Disallow. Essa sintaxe requer mais processamento do bot e leva a ambiguidades que não podem ser resolvidas.

Minha pergunta, então, é qual é o caminho certo para fazer as coisas? O que os Webmasters esperam de um bot bem-comportado quando se trata de manipulação do robots.txt?

Jim Mischel
fonte
Simplesmente processar todas as diretivas em ordem (de cima para baixo) parece remover toda ambiguidade (incluindo o processamento de padrões de URL curinga , que é oficialmente "indefinido"). No entanto, os principais robôs de mecanismo de pesquisa (Googlebot, Bingbot etc.) não funcionam assim, portanto, isso não é viável.
MrWhite

Respostas:

4

Uma observação muito importante: a instrução Allow deve vir antes da instrução Disallow , não importa quão específicas sejam suas instruções. Então, no seu terceiro exemplo - não, os bots não vão rastrear /norobots/index.html.

Geralmente, como regra pessoal, coloco primeiro as declarações de permissão e depois listo as páginas e pastas não permitidas.

Vergil Penkov
fonte
Então, você está recomendando que eu siga o padrão da "primeira regra de correspondência"? Ou seja, o bot lê o robots.txt e obtém a primeira permissão ou proibição que corresponde ao URL em questão?
Jim Mischel
11
Mas você sabe se essa é a interpretação geralmente aceita do robots.txt? Ou seja, se eu implementasse o padrão "primeira regra de correspondência", seria o que a maioria dos webmasters espera?
Jim Mischel
4
A descrição de Permitir no artigo da Wikipedia sobre robots.txt - en.wikipedia.org/wiki/Robots_exclusion_standard#Allow_directive - (e vários outros sites) diz que "primeira regra de correspondência" é o padrão. Como isso é 100% inequívoco e fácil de implementar e provar correto, foi com isso que eu fui.
Jim Mischel
11
Obrigado por responder sua própria pergunta :) Eu não tinha certeza de como responder. Não conheço o método geralmente aceito, mas é assim que o uso desde que comecei a trabalhar como especialista em SEO e sempre funcionou corretamente.
Vergil Penkov 04/12/10
11
A ordem das instruções Allow e Disallow não faz diferença para o Googlebot, que analisa a especificidade. O Bing também, mas não conhece outros mecanismos de pesquisa, por isso, em caso de dúvida, Permite o primeiro, eu acho.
pelms
2

Aqui está minha opinião sobre o que vejo nesses três exemplos.

Exemplo 1
Eu ignoraria o /folder1/diretório inteiro , exceto o myfile.htmlarquivo. Como eles permitem isso explicitamente, eu assumiria que era simplesmente mais fácil bloquear o diretório inteiro e permitir explicitamente esse arquivo, em vez de listar todos os arquivos que eles desejavam bloquear. Se esse diretório contivesse muitos arquivos e subdiretórios, esse arquivo robots.txt poderia ficar pesado rapidamente.

Exemplo 2
Eu diria que o /norobots/diretório está fora dos limites e todo o resto está disponível para ser rastreado. Eu li isso como "rastrear tudo, exceto o diretório / norobots /".

Exemplo 3
Semelhante ao exemplo 2, eu assumiria que o /norobots/diretório está fora dos limites e que todos os .htmlarquivos que não estão nesse diretório estão disponíveis para rastreamento. Eu li isso como "rastrear todos os arquivos .html, mas não rastrear nenhum conteúdo no diretório / norobots /".

Esperamos que o agente do usuário do seu bot contenha um URL no qual eles possam descobrir mais informações sobre seus hábitos de rastreamento e fazer solicitações de remoção ou fornecer feedback sobre como eles querem que seu robots.txt seja interpretado.

John Conde
fonte
11
Suas respostas provavelmente correspondem à intenção, exceto a última, que acho um tanto questionável. Nesses casos específicos, eu posso codificar os robôs manipulando corretamente, mas há outros casos ambíguos que não são tão facilmente determinados. Além disso, estou procurando uma solução geral. E, sim, nossa string de agente de usuário possui um link para nossa página de Perguntas frequentes. E, embora possamos descrever como lidamos com o robots.txt, seria melhor para todos os envolvidos se não precisássemos. Ou seja, se todos lidassem com as coisas da mesma maneira. Mas isso não parece ser o caso.
Jim Mischel
A seguir, veja como o Googlebot lida com seus exemplos, como pode ser testado na ferramenta de teste robots.txt (Ferramentas para webmasters> URLs bloqueados). O Google não se importa se você coloca a opção Permitir ou Não permite primeiro, mas possui um algoritmo que determina especificidade, o que leva a alguns resultados não óbvios. Por exemplo, se você substituir '/*.html$' por '/*myfile.html$' no terceiro exemplo, 'myfile.html' será permitido em vez de ser bloqueado OU se você perder o '/' de 'à direita' Os arquivos / norobots / ', .html também são permitidos.
pelms
Aha! Segundo a Wikipedia, o Google apenas analisa o número de caracteres para determinar qual diretiva usar e, no caso de um 'empate', acompanha 'Permitir'.
pelms