Bloqueio de curingas de bots no Apache

2

Eu gerencio um site que fornece Subversion & TRAC para muitos projetos de código aberto. Isso funciona muito bem com uma exceção: muitos mecanismos de pesquisa não se importam com robots.txt e DoS no servidor da Web com muitas solicitações paralelas no TRAC, por exemplo, as alterações do TRAC como tar / zip.

Como executo muitos repositórios do TRAC em um domínio, uso curingas em robots.txt , o que, de acordo com o Google, deve ser permitido:

User-agent: *
Disallow: /*/changeset
Disallow: /*/browser
Disallow: /*/log

Infelizmente, até o Google não se importa com isso, embora as ferramentas para webmasters confirmem que os URIs específicos devam ser ignorados. E sim, eu disse a eles, mas eles não se importaram. Com certeza outros como o Yandex também não se importam com isso.

Assim, o plano B é para bloqueá-los na configuração do Apache, um amigo meu me deu algumas dicas sobre como fazer isso:

<Directory /foo/bar>
                SetEnvIf User-Agent Yandex BlockYandex=1
                SetEnvIf User-Agent METASpider BlockMETASpider=1
                SetEnvIf User-Agent Mail.ru BlockMailru=1
                Order allow,deny
                Allow from all
                Deny from env=BlockYandex
                Deny from env=BlockMETASpider
                Deny from env=BlockMailru
</Directory>

Agora, tento descobrir se posso fazer algo assim com caracteres curinga, por isso não preciso fazer uma seção <Directory> para cada repositório. Encontrei <LocationMatch> nos documentos do Apache , mas não tenho certeza se posso usar isso como um substituto para <Directory> .

Então, minha pergunta é se posso usar <LocationMatch> para isso e / ou alguém tem algumas ideias melhores sobre como filtrar os bots no lado do servidor?

    
por Adrian Gschwend 01.09.2011 / 11:45

1 resposta

1

(Eu queria respondê-lo como recomendado pelo site, mas a edição da pergunta levou a uma mensagem de erro)

Eu verifiquei mais documentação no Apache.org e descobri:

   # get rid of the bots which are too stupid to respect robots.txt
   <LocationMatch "/[^/]+/(browser|changeset|log)">
      BrowserMatchNoCase googlebot ImBot
      BrowserMatchNoCase Yandex ImBot
      BrowserMatchNoCase bingbot ImBot
      Order allow,deny
      Allow from all
      Deny from env=ImBot
   </LocationMatch>

Referências:

Teste com uma extensão user-agent-switcher para seu navegador. Devido ao noob-limits não posso postar mais links para ele :) Meu site está em svn.netlabs.org para quem quiser testá-lo ao vivo.

    
por 01.09.2011 / 23:28