Задать вопрос
Все статьи / Полезная информация / Как заблокировать доступ ботов к сайту с помощью .htaccess
Найти результаты:
Период:
с:
 
по:
Помощь в поиске

Помощь в поиске

apple banana
Найти записи, которые содержат хотя бы одно из двух слов.

+apple +juice
Найти записи, которые содержат оба слова.

+apple macintosh
Найти записи, которые содержат слово 'apple', но положение записей выше, если они также содержат 'macintosh'.

+apple -macintosh
Найти записи, которые содержат слово 'apple', но не 'macintosh'.

+apple ~macintosh
Найти записи, которые содержат слово 'apple', но если запись также содержит слово 'macintosh', rate it lower than if row does not. Это более "мягкий" чем поиск '+apple -macintosh', для которого наличие 'macintosh' вызывает что записи не будут возвращены вовсе.

+apple +(>turnover <strudel)
Найти записи, которые содержат слова 'apple' и 'turnover', или 'apple' и 'strudel' (в любом порядке), но ранг 'apple turnover' выше чем 'apple strudel'.

apple*
Найти записи, которые содержат такие слова как 'apple', 'apples', 'applesauce', или 'applet'.

"some words"
Найти записи, которые содержат точную фразу 'some words' (например записи содержащие 'some words of wisdom', но не "some noise words").

Как заблокировать доступ ботов к сайту с помощью .htaccess

Не все роботы одинаково полезны. Поисковые системы вроде Google или Яндекс нужны для индексации страниц, но вместе с ними сайт посещают и нежелательные боты. Их активность может приносить больше вреда, чем пользы. 

Почему стоит задуматься о блокировке:

  • Снижение нагрузки на сервер. Агрессивные роботы могут отправлять сотни запросов в минуту. В результате сервер начинает расходовать ресурсы не на реальных посетителей, а на обслуживание бесполезного трафика. Это снижает скорость загрузки страниц и в худших случаях приводит к сбоям или временной недоступности сайта.
  • Защита контента. Ботов могут использовать для массового копирования текстов, изображений и структур баз данных. В итоге уникальные материалы оказываются на чужих сайтах, что негативно влияет на SEO и репутацию проекта.
  • Спам. Автоматические роботы нередко оставляют спам-комментарии или фальшивые заявки через формы обратной связи.
  • Экономия ресурсов. Если сайт работает на ограниченном тарифе хостинга, постоянные обращения нежелательных ботов могут быстро расходовать лимиты.
  • Улучшение качества аналитики. Ненужные боты искажают статистику: увеличивают количество посещений и искажают данные о поведении пользователей.
  • Безопасность. Злоумышленники используют ботов для поиска уязвимостей: открытых директорий, конфигурационных файлов или устаревших плагинов. Сканирование может стать первым этапом атаки на сайт.

Иными словами, блокировка таких ботов помогает сохранить производительность сайта, обезопасить материалы и получить более точную аналитику.

Как определить подозрительную активность

Заподозрить, что на сайт зачастили нежелательные боты, довольно просто. Подозрительная активность проявляется в мелочах, но если присмотреться — картина становится очевидной:

  • Сайт начал тормозить без причины. Вроде бы посетителей немного, реклама не крутится, а страницы все равно открываются медленно. Часто это следствие того, что бот штурмует сервер десятками запросов.
  • В статистике появляются странные всплески. В Google Аналитике или Яндекс.Метрике видно резкое увеличение трафика, но нет признаков реальных пользователей: ни заказов, ни заявок, ни переходов по страницам.
  • В логах сервера много одинаковых запросов. Если открыть access.log, можно заметить, что один и тот же IP или User-Agent слишком часто обращается к сайту.
  • Подозрительные страницы в индексе. В поиске внезапно появляются черновики, тестовые разделы или даже закрытые папки — признак того, что бот прошелся там, где ему быть не положено.
  • Массовое скачивание файлов. В логах фиксируются попытки загрузить все доступные документы, изображения или карты сайта.

Если совпадает хотя бы пара пунктов — это может быть сигналом, что пора заняться ограничением доступа.

Что такое .htaccess и как он работает

Файл .htaccess — это конфигурационный файл веб-сервера Apache, который позволяет управлять поведением сайта без доступа к основным настройкам сервера. Его название расшифровывается как hypertext access — «доступ к гипертексту».

Принцип работы прост: когда к сайту поступает запрос, сервер Apache проверяет наличие файла .htaccess в соответствующей директории. Если файл есть, сервер применяет все правила из него и только после этого обрабатывает запрос.

Где находится .htaccess и как его редактировать

Файл .htaccess можно найти в корневой папке сайта — там же, где находятся директории public_html, www или htdocs. Но не всегда он виден сразу: многие файловые менеджеры и FTP-клиенты по умолчанию скрывают файлы, которые начинаются с точки.

Есть несколько способов найти и отредактировать .htaccess:

  • Через файловый менеджер хостинга. Большинство панелей управления (например, cPanel или ispmanager) показывают этот файл, если включить отображение скрытых файлов.
  • Через FTP или SFTP. Можно подключиться к серверу с помощью программы вроде FileZilla, зайти в корень сайта и скачать .htaccess.
  • Прямо на сервере. Если у вас есть SSH-доступ к серверу, файл удобно править с помощью редакторов nano или vim.

Главное не забывайте: даже одна ошибка в синтаксисе может положить сайт, поэтому перед изменениями всегда лучше сделать копию файла.

Как .htaccess влияет на доступ к сайту и ресурсоемкость

Файл .htaccess напрямую управляет тем, кто и как может попасть на ваш сайт. Через него можно закрыть доступ определенным ботам, пользователям или целым диапазонам IP-адресов. Например, если добавить правило блокировки, запрос от нежелательного гостя даже не дойдет до основного кода сайта — сервер сразу вернет отказ. Это помогает разгрузить сайт и защитить его от лишних обращений.

Но у .htaccess есть и обратная сторона. Каждый раз, когда кто-то заходит на сайт, сервер Apache сначала проверяет правила в этом файле. Чем больше правил и условий прописано, тем больше времени тратится на их обработку. Если правил слишком много, они могут замедлить открытие страниц и увеличить нагрузку на сервер.

Поэтому лучше использовать .htaccess для действительно важных вещей: блокировки плохих ботов, настройки редиректов и защиты отдельных директорий. Все остальное разумнее вынести в глобальные настройки сервера или в конфигурацию самого сайта.

Как заблокировать ботов по User-Agent

Шаг 1. Откройте .htaccess

1. Войдите в панель хостинга cPanel.
2. Откройте File Manager.

3. Перейдите в корневую папку сайта — обычно это public_html или папка вашего домена. Найдите файл:

Если не можете его найти, включите показ скрытых файлов (в настройках File Manager — Show Hidden Files (dotfiles)).

Если его вообще нет — создайте новый пустой текстовый файл с именем .htaccess.

Шаг 2. Добавьте правило блокировки по User-Agent

Важно! На всякий случай сделайте копию файла. 

Теперь нужно прописать в .htaccess правило, которое будет отсеивать ненужный трафик. Делается это с помощью модуля mod_rewrite.

Откройте .htaccess и вставьте в самое начало файла такой блок:

<IfModule mod_rewrite.c>
    RewriteEngine On
    # Замените EXAMPLE_USER_AGENT на название или часть строки User-Agent
    RewriteCond %{HTTP_USER_AGENT} EXAMPLE_USER_AGENT
    RewriteRule (.*) - [F,L]
</IfModule>

Что здесь происходит:

  • RewriteEngine On — включает механизм переписывания правил.
  • RewriteCond %{HTTP_USER_AGENT} … — проверяет, совпадает ли User-Agent запроса с указанным шаблоном.
  • RewriteRule (.*) - [F,L] — если условие совпало, сервер сразу возвращает код 403 Forbidden и не продолжает обрабатывать запрос.

Например, если хотите заблокировать бота с User-Agent BadBot, код будет таким:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_USER_AGENT} BadBot
    RewriteRule (.*) - [F,L]
</IfModule>

После сохранения файла все запросы с User-Agent, который содержит BadBot, будут получать отказ в доступе.

Давайте убедимся, что правило действительно работает. 

Выполните команду:

curl -I -A "BadBot" https://ваш-домен.ru/

Вместо BadBot укажите заблокированный User-Agent. В выводе должен быть код 403 Forbidden.

Как заблокировать ботов по IP

Иногда проще всего ограничить доступ не по User-Agent, а по конкретному IP-адресу. Если вы точно знаете источник вредной активности — этот способ вам подойдет больше. Но нужно учитывать, что многие боты используют динамические или постоянно меняющиеся IP, поэтому блокировка не всегда эффективна.

Блокировка одного IP

Чтобы запретить доступ пользователю или боту с конкретного IP, добавьте в .htaccess такой блок:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REMOTE_ADDR} ^85\.214\.132\.77$
    RewriteRule (.*) - [F,L]
</IfModule>

85.214.132.77 — это IP, который вы хотите заблокировать. Обратите внимание: точки в IP обязательно нужно экранировать слешем \..

Блокировка нескольких IP

Если нужно запретить доступ сразу нескольким адресам:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REMOTE_ADDR} ^37\.120\.192\.15$ [OR]
    RewriteCond %{REMOTE_ADDR} ^178\.63\.45\.90$ [OR]
    RewriteCond %{REMOTE_ADDR} ^95\.217\.8\.134$
    RewriteRule (.*) - [F,L]
</IfModule>

Флаг [OR] означает «или». Теперь сайт будет недоступен с трех разных IP.

Блокировка диапазона IP

В некоторых случаях удобнее закрыть доступ сразу целому диапазону, а не каждому адресу отдельно. Например:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REMOTE_ADDR} ^192\.168\. [OR]
    RewriteCond %{REMOTE_ADDR} ^203\.0\.113\. [OR]
    RewriteCond %{REMOTE_ADDR} ^172\.16\.
    RewriteRule (.*) - [F,L]
</IfModule>

Тогда заблокируются:

  • все IP, которые начинаются с 192.168. (часто используется в тестовых сетях);
  • все IP, которые начинаются с 203.0.113.;
  • все IP из подсети 172.16.*.*.

Как заблокировать ботов по рефереру

Реферер — это адрес страницы, с которой пользователь (или бот) пришел на ваш сайт. Если спамеры или парсеры заходят через конкретные домены, их можно отрезать правилами в .htaccess.

Вставьте блок в начало файла:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} ^https?://([^.]+\.)?spamtracker\.com [NC,OR]
    RewriteCond %{HTTP_REFERER} ^https?://([^.]+\.)?badtraffic\.net [NC,OR]
    RewriteCond %{HTTP_REFERER} ^https?://([^.]+\.)?dataleechers\.ru [NC]
    RewriteRule (.*) - [F,L]
</IfModule>

Где:

  • https?:// — правило сработает и для http://, и для https://.
  • ([^.]+\.)? — учитываются поддомены (например, img.spamtracker.com).
  • [NC] — проверка без учета регистра.

Проверить работу можно так:

curl -I -e "https://spamtracker.com/page" https://ваш-домен.ru/

Если все верно, сервер вернет 403 Forbidden.

Как заблокировать ботов по стране

Чтобы блокировать доступ по странам, на сервере должен быть установлен модуль геолокации — mod_geoip или mod_maxminddb. Они автоматически подставляют код страны в переменные окружения (GEOIP_COUNTRY_CODE или MM_COUNTRY_CODE).

Если модуль включен, в .htaccess можно добавить правило:

<IfModule mod_rewrite.c>
    RewriteEngine On
    # блокируем Нигерию (NG) и Вьетнам (VN)
    RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(NG|VN)$ [OR]
    RewriteCond %{ENV:MM_COUNTRY_CODE} ^(NG|VN)$
    RewriteRule .* - [F,L]
</IfModule>

Где:

  • %{ENV:GEOIP_COUNTRY_CODE} — переменная для старого модуля GeoIP.
  • %{ENV:MM_COUNTRY_CODE} — переменная для нового MaxMind DB.
  • ^(NG|VN)$ — список стран, которые блокируются (в примере Нигерия и Вьетнам).

Посетители с IP-адресами из выбранных стран будут получать ошибку доступа.

Как не заблокировать нужных пользователей

Чтобы при блокировке по странам или IP-диапазонам не отрезать легитимный трафик, стоит придерживаться простых рекомендаций:

  • Начинайте с точечных блокировок. Не используйте слишком общие условия вроде Mozilla/5.0 или целые страны без веской причины. Лучше работать с конкретными IP, подсетями или уникальными признаками бота.
  • Проверяйте логи. После добавления новых правил посмотрите access.log и error.log. Если там появились коды 403 от адресов, у которых должен быть доступ, значит, нужно корректировать настройки.
  • Используйте белые списки. Если у вас есть сотрудники, партнеры или сервисы с фиксированными IP-адресами, заранее внесите их в исключения, чтобы они не пострадали от ограничений.
  • Периодически тестируйте. Попробуйте открыть сайт из разных условий — через VPN, с подменой User-Agent или реферера. Так вы убедитесь, что блокировки работают корректно.
  • Будьте осторожны с диапазонами. Чем шире диапазон IP, тем выше риск зацепить обычных пользователей. Лучше блокировать меньше, но точнее.
  • Оставляйте путь для связи. Если все же кто-то легитимный оказался под блокировкой, у него должна быть возможность связаться с вами: например, через контактную страницу или форму обратной связи.

Какие есть альтернативы блокировке через .htaccess 

При большом количестве правил .htaccess  может замедлять сайт. Кроме того, его возможности ограничены. Поэтому многие администраторы используют дополнительные средства защиты:

  • Файрволы на уровне сервера. Аппаратные и программные файрволы (например, iptables, UFW или коммерческие решения) позволяют фильтровать трафик до того, как он попадет в веб-сервер. 
  • Плагины для CMS. Если сайт работает на WordPress, Joomla или другой популярной системе, можно установить плагины, которые автоматически блокируют подозрительные IP, ботов или целые страны. 
  • CDN. Сервисы вроде Cloudflare позволяют включать защиту от DDoS, фильтрацию по странам, настройку ограничения количества запросов  и использовать собственные правила для блокировки ботов. Плюс — это разгружает сервер, так как трафик фильтруется до попадания на сайт.

Заключение

Итак, .htaccess — быстрый и понятный способ ограничить доступ к сайту, в особенности если нужно решить проблему прямо сейчас. Но если задача стоит шире — постоянная защита, гибкие правила, контроль на уровне сети — лучше сочетать настройку .htaccess с более мощными инструментами вроде файрволов и CDN-сервисов. Так вы сможете не только остановить нежелательных ботов, но и сохранить производительность и стабильность ресурса.

Предыдущая статья
Знакомство с Node.js
Следующая статья
Как использовать Git на хостинге