Индексация сайта — важный элемент продвижения в поисковых системах. Индексируются сайты с помощью поисковых роботов (ботов), которые обращаются ко всем страницам ресурса и тем самым создают нагрузку на сервер.
Кроме поисковых роботов существуют спам-боты, которые публикуют спам на сайте или собирают открытые данные (напр. email`ы пользователей) для спам-рассылки. Чем популярнее ваш сайт, тем больше поисковых ботов его посещают.
Есть несколько способов как снизить нагрузку от поисковых ботов:
С помощью файла robots.txt
Файл robots.txt содержит в себе правила для поисковых роботов, с помощью которых можно ограничить количество и промежуток времени между индексациями сайта или вовсе её запретить. Как настроить robots.txt
С помощью тега robots
Тег robots управляет индексацией конкретной страницы. Данный тег необходимо добавить в разметку самой страницы с необходимыми параметрами:
страница индексируется, робот идёт по ссылкам с этой страницы:
<meta name="robots" content="index, follow"/>
страница не индексируется, но робот идет дальше по ссылкам.
<meta name="robots" content="noindex, follow"/>
страница индексируется, но робот не идёт по ссылкам на другие страницы, т.е. он их не индексирует.
<meta name="robots" content="index, nofollow"/>
страница не индексируется, робот по ссылкам не идет. Если поместить такой код на все страницы сайта, он не проиндексируется.
<meta name="robots" content="noindex, nofollow"/>
С помощью .htaccess или nginx
Если ваш сервер работает в связке apache + nginx, рекомендуем использовать блокировку через htaccess. Для сервера, который использует nginx + php-fpm, блокировку необходимо произвести с помощью nginx. Чтобы настроить блокировку с помощью .htaccess или nginx, необходимо выяснить *User-Agent`ов*, которые создают нагрузку на сервер. Преимущества .htaccess и nginx в том, что блокировка происходит на уровне сервера и данное ограничение срабатывает во всех случаях, в отличии от robots.txt, который многие роботы игнорируют.
Получить список запросов можно с помощью скрипта, который отсортирует их, начиная с самых частых.
Вывести список User-Agent`ов по названию:
cat /var/www/httpd-logs/faq-reg.ru.access.log |/usr/bin/awk {'print $12'} | sort -n | uniq -c | sort -rn | head -20
Вывести список IP-адресов, с которых поступают запросы:
cat /var/www/httpd-logs/faq-reg.ru.access.log |/usr/bin/awk {'print $1'} | sort -n | uniq -c | sort -rn | head -20
Вместо faq-reg.ru.access.log укажите вашего файла с логами.
Внимание
Расположение логов зависит от настроек вашего сервера. Для пользователей с панелью управления ispmanager файлы располагаются в директории: /var/www/httpd-logs/
Блокировка через .htaccess
Для блокировки с помощью .htaccess необходимо добавить правила в файл. В случае отсутствия вы также можете создать его, воспользовавшись инструкцией: У меня нет файла .htaccess, что делать.
Для каждого бота, который необходимо заблокировать, добавьте в файле .htaccess строки:
SetEnvIfNoCase User-Agent "^Name_of_bot_1" bad_bot
SetEnvIfNoCase User-Agent "^Name_of_bot_2" bad_bot
<Limit GET POST HEAD>
Order Allow,Deny
Allow from all
Deny from env=bad_bot
Deny from 123.123.123.123
</Limit>
где на место Name_of_bot_1 и Name_of_bot_2 подставлены названия User-Agent`ов, а для блокировки по IP-адресу в строке «Deny from 123.123.123.123» указан нужный IP.
Сохраните изменения.
Блокировка через nginx
Для блокировки с помощью nginx необходимо добавить правила в файл конфигурации виртуального хоста faq-reg.ru.conf, где faq-reg.ru — имя вашего домена.
Внимание
Расположение файла конфигурации зависит от настройки вашего сервера. Если у вас заказана панель управления ispmanager, конфигурационные файлы находятся в директории: /etc/nginx/vhosts/username/
Данные правила можно добавить в любую часть конфигурационного файла начиная с http {}. Добавьте в файл конфигурации следующие строки:
if ($http_user_agent ~* (AhrefsBot|majestic) ) {
return 403;
}
Вместо AhrefsBot|majestic укажите названия User-Agent`ов.
Чтобы заблокировать определенный IP-адрес, необходимо добавить:
deny 123.123.123.123;
Вместо 123.123.123.123 укажите IP-адрес блокируемого хоста.
Для блокировки локальных IP-адресов:
location / {
# блокировка одного локального адреса
deny 192.168.1.1;
# блокировка всех адресов подсети 192.168.1.0/24
allow 192.168.1.0/24;
# блокировка всех IP адресов
deny all;
}
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊