2

Я управляю сайтом, который предоставляет 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 ответ1

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>

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .