Групповая блокировка ботов в Apache
Я управляю сайтом, который предоставляет Subversion & TRAC для множества проектов с открытым исходным кодом. Это работает довольно хорошо с одним исключением: многие поисковые системы не заботятся о robots.txt
и DoS веб-сервер с множеством параллельных запросов в 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>
для этого и / или у кого-нибудь есть лучшие идеи по фильтрации ботов на стороне сервера?
1 ответ
(Я хотел ответить на него в соответствии с рекомендациями сайта, но редактирование вопроса привело к сообщению об ошибке)
Я проверил больше документации на 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>
Рекомендации:
- LocationMatch: http://httpd.apache.org/docs/2.2/mod/core.html
- BrowserMatchNoCase: http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html
Протестируйте с расширением user-agent-switcher для вашего браузера. Из-за ограничений noob я не могу публиковать больше ссылок на него:) Мой сайт находится на svn.netlabs.org для тех, кто хочет попробовать его вживую.