Групповая блокировка ботов в Apache

2173
Adrian Gschwend

Я управляю сайтом, который предоставляет Subversion & TRAC для множества проектов с открытым исходным кодом. Это работает очень хорошо, за одним исключением: многие поисковые системы не заботятся о robots.txtDoS и веб-сервере с множеством параллельных запросов в TRAC, например, о наборах изменений TRAC в виде tar / zip.

Поскольку я использую множество репозиториев TRAC в одном домене, я использую подстановочные знаки robots.txt, которые согласно Google должны быть разрешены:

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

К сожалению, даже Google не заботится об этом, хотя инструменты для веб-мастеров подтверждают, что определенные URI следует игнорировать. И да, я сказал им, но им было все равно. Наверняка другие, такие как Яндекс, тоже не заботятся об этом.

Поэтому план Б состоит в том, чтобы заблокировать их в конфигурации Apache, мой друг дал мне несколько советов о том, как это сделать:

<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> 

Теперь я пытаюсь выяснить, могу ли я сделать что-то подобное с подстановочными знаками, так что мне не нужно делать <Directory>раздел для каждого хранилища. Я нашел <LocationMatch>в документации Apache, но я не уверен, смогу ли я использовать это в качестве замены <Directory>.

Итак, мой вопрос: могу ли я использовать <LocationMatch>для этого и / или у кого-нибудь есть лучшие идеи по фильтрации ботов на стороне сервера?

2

1 ответ на вопрос

1
Adrian Gschwend

(Я хотел ответить на него в соответствии с рекомендациями сайта, но редактирование вопроса привело к сообщению об ошибке)

Я проверил больше документации на Apache.org и понял это сам:

 # 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> 

Рекомендации:

Протестируйте с расширением user-agent-switcher для вашего браузера. Из-за ограничений noob я не могу публиковать больше ссылок на него :) Мой сайт находится на svn.netlabs.org для тех, кто хочет попробовать его вживую.

Если вы найдете решение самостоятельно, оно * должно * быть опубликовано как ответ, подобный этому. Это не должно быть отредактировано в вопросе. grawity 12 лет назад 0
Ах, хорошо, так что я все сделал правильно :) спасибо! Adrian Gschwend 12 лет назад 0

Похожие вопросы