Я управляю сайтом, который предоставляет 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>
для этого и / или у кого-нибудь есть лучшие идеи по фильтрации ботов на стороне сервера?