Вопрос или проблема
У меня есть сайт на WordPress с событиями, создаваемыми плагином The Events Calendar. Боты застревают и используют много ресурсов при обходе ~/events/ и запросах для событий, поэтому я хотел бы предотвратить это.
Думал, что нашел именно то, что мне нужно здесь: https://managingwp.io/live-blog/protecting-your-events-calendar-combatting-scraping-bots-and-resource-drains/, но этот код:
# Определите частичные соответствия для известных ботов (только три перечислены для краткости)
RewriteCond %{HTTP_USER_AGENT} applebot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} googlebot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} mozilla [NC]
# Блокировать URL с определенными строками запроса или путями для этих ботов
RewriteCond %{QUERY_STRING} (ical|eventDisplay) [NC,OR]
RewriteCond %{REQUEST_URI} ^/events/ [NC]
RewriteRule ^ - [F,L]
# END Hosting Block Bots
приводит к тому, что пользователи не могут получить доступ к ~/events/, с сообщением об ошибке “Ошибка 403 – Доступ запрещен. У вас нет прав доступа к запрашиваемому ресурсу. Пожалуйста, свяжитесь с владельцем веб-сайта для получения дополнительной помощи.” Что мне нужно исправить здесь?
Я искал в интернете с помощью «блокировать ботов из определенной директории .htaccess», но не нашел источник, который соответствует моей ситуации.
Также, в других примерах кода, которые я видел для блокировки ботов на всем сайте, строка «RewriteEngine On» идет перед первой строкой «RewriteCond». Является ли строка «RewriteEngine On» необходимой или опциональной?
Ответ или решение
Чтобы блокировать ботов от сканирования определенных директорий на вашем сайте WordPress с помощью файла .htaccess, важно внимательно разобраться в механизмах работы Apache, а также в правильной настройке правил для переписывания URL. Из вашего описания следует, что вы столкнулись с проблемой избыточной нагрузки на сервер из-за ботов, которые сканируют директорию ~/events/ и связанные с ней запросы, что вызывает ошибки доступа для обычных пользователей.
Причины вашей проблемы:
- Отсутствие строки "RewriteEngine On" – Без этой строки модуль mod_rewrite не будет активирован, и ваши правила не будут применены.
- Некорректная логика правил – Ваши текущие правила ограничивают доступ ко всем пользователям, а не только ботам. Это происходит, потому что правило применяется ко всем, так как условие с USER_AGENT не является эксклюзивным.
Как исправить ситуацию:
-
Активировать механизм переписывания:
Убедитесь, что в начале .htaccess файла добавлена строка:
RewriteEngine On
-
Уточнить условия блокировки:
Чтобы блокировать только известных ботов, вам следует более тщательно настраивать условия USER_AGENT и исключить их применение для обычных пользователей. Например:
# Включить механизм переписывания RewriteEngine On # Определить частичные совпадения для известных ботов RewriteCond %{HTTP_USER_AGENT} (applebot|googlebot|bingbot) [NC] # Блокировать URL с определенными строками запроса или путями только для этих ботов RewriteCond %{QUERY_STRING} (ical|eventDisplay) [NC,OR] RewriteCond %{REQUEST_URI} ^/events/ [NC] RewriteRule ^ - [F,L]
-
Проверить правильность синтаксиса и расположения .htaccess файла:
Убедитесь, что файл .htaccess находится в корневом каталоге вашего сайта или в правильной поддиректории и что у вас имеются все необходимые права доступа на его изменение.
-
Тестирование и отладка:
Проверьте эффект ваших изменений, используя различные агенты пользователя и URL. Это можно сделать через инструменты разработчика в браузере или с помощью curl в командной строке:
curl -A "googlebot" http://yourdomain.com/events/
Контекст SEO и правильный подход:
Хотя важно блокировать злоупотребляющих боток, не стоит забывать о легитимных поисковых системах, которые могут способствовать вашему SEO. Рассмотрите возможность использования файла robots.txt для запрета определенной директории, что является более мягким методом:
User-agent: *
Disallow: /events/
Однако, будьте осторожны, применяя robots.txt: такие инструкции игнорируются зловредными ботами, поэтому хттп-ответы (403 и т.д.) будут надежнее для предложенной задачи.
Надеюсь, эти рекомендации будут полезны и помогут вам эффективно ограничить несанкционированное сканирование вашего сайта, оптимизировав серверные ресурсы и обеспечив доступность для реальных посетителей.