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 Allow
e 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 Disallow
e desapareceria, nunca rastreando o arquivo que era especificamente permitido.
Nós estamos livres se ignorarmos todas as Allow
linhas, mas podemos não rastrear algo que possamos rastrear. Sentiremos falta das coisas.
Tivemos um grande sucesso verificando Allow
primeiro e depois verificando Disallow
, a ideia Allow
pretendia 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 Allow
primeiro pense que pode rastrear qualquer coisa no site.
Mesmo isso pode ser contornado neste caso. Podemos comparar a correspondência Allow
com a correspondência Disallow
e 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?
fonte
Respostas:
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.
fonte
Aqui está minha opinião sobre o que vejo nesses três exemplos.
Exemplo 1
Eu ignoraria o
/folder1/
diretório inteiro , exceto omyfile.html
arquivo. 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.html
arquivos 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.
fonte