(2 минут чтения)
Что такое robots.txt?
Файл robots.txt нужен для того, чтобы напомнить роботам-поисковикам и поисковым программам информацию о том, что они должны делать на сайте, а что – нет. Директивы отправляют с помощью стандарта исключений Robots Exclusion Protocol, однако стоит отметить, что некоторые поисковые системы заявляют о том, что они используют нестандартные записи. Базовые записи состоят из сообщений относительно того, какие части сайта роботы не должны обрабатывать, однако использование robots.txt предоставляет намного более широкие возможности.
Немного истории
Протокол исключений для роботов (Robots Exclusion Protocol) был разработан четверть столетия назад (в феврале 1994 года) и с того момента почти не изменился, за исключением уже упомянутых нестандартных записей. Поскольку в тот период на рынке существовало много поисковых систем (достаточно вспомнить AltaVista, HotBot, Lycos или InfoSeek – список был достаточно длинный), протокол получил статус неофициального стандарта (unofficial standard). Однако здесь стоит вспомнить о том, что стандарт является неопределенным, поскольку запрос был и остается на уровне предложения, которое боты часто частично или полностью игнорируют.
Интересно, что в июле 2019 года в Google, чьи боты также не всегда выполняют директивы из файлов robots.txt, предложили рассмотреть Протокол исключений для роботов как официальный стандарт. Может ли это существенно повлиять на использование robots.txt? Теоретически, нет. Однако могут возникнуть обсуждения касательно внедрения новых записей, которые могут помочь эффективнее «контролировать» поисковых роботов.
Какие роботы обрабатывают файл robots.txt?
Файл robots.txt рассчитан на все автоматические системы, которые сканируют сайт. Это касается не только самых популярных роботов-поисковиков с точки зрения SEO. Боты, для которых созданы эти указания, это также и автоматизированные архивные устройства (например, как Web Archive), программы для загрузки сайта на локальный диск (например, HTTrack Website Copier), средства для анализа сайтов (включая средства SEO по-типу Xenu, а также ботов Majestic SEO и Ahrefs), т.д.
В множестве случаев разработчики не должны проникаться директивами. С другой стороны, некоторые роботы позволяют своим пользователям выбирать, желают ли они учитывать выявленные директивы.
Почему стоит использовать robots.txt?
Это главный вопрос, учитывая уже упомянутый факт того, что не всегда директивы из файла robots.txt принимаются к сведению. Ответ прост: всегда лучше иметь немного контроля над роботами, чем не иметь его совсем. Что можно благодаря ему получить? Во-первых, можно запретить автоматическое сканирование системам и указать им разделы сайта, которые по разным причинам не должны сканироваться. Также и наоборот, им можно указать на места, которые необходимо обязательно просканировать.
Блокировка разных отделов сайта может иметь разные цели:
- Вопрос безопасности – возможно вы не хотите, чтобы роботы (или случайные пользователи, которые позже могут использовать данные, найденные роботами) имели возможность доступа к разделам, информация из которых не должна быть в открытом доступе.
- Защита от дублирования контента – если на сайте находится большое количество дублированного контента, а URL-адрес позволяет его четко идентифицировать, через файл robots.txt можно дать сигнал о том, что определенный раздел сайта не должен обрабатываться.
- Экономия трансфера – с помощью записей в robots.txt можно попробовать удалить из маршрутов передвижения роботов целые подразделения или отдельные виды файлов – даже каталог с графическими элементами или их широкоформатными версиями. В случае отдельных сайтов экономия трансфера может быть значительной.
- Защита от «утечки» контента наружу – обратите внимание на то, что предварительно предложенная защита каталогов с широкоформатными графическими элементами можно использовать также для представления в поисковых системах меньших версий изображений. Это может быть важной для фотобанков, и не только.
- Оптимизация бюджета сканирования – хотя этот пункт последний в списке, он чрезвычайно важен. Чем больше сайт, тем больше внимания необходимо уделить оптимизации маршрутов, которыми двигаются боты-индексаторы поисковых систем. Блокируя в robots.txt участки, которые не относятся к SEO, вы увеличиваете вероятность того, что роботы будут продвигаться так, как надо.
Основные директивы в robots.txt: user-agent, allow и disallow
Перейдем к сути дела – какой вид должен иметь файл robots.txt. Согласно определению, это текстовый файл, размещенный в основном каталоге сайта, с которым он связан. Основными директивами являются user-agent, allow и disallow. Используя первую из перечисленных, можно определить ботов, к которым относится то или иное правило. Две другие директивы соответственно определяют участки, к которым бот должен иметь доступ, и наоборот – не должен.
Стоит помнить о том, что robots.txt поддерживает переменную в виде звездочки, другими словами – астериску (*), а строка маршрутов, которых касается директива, всегда должна быть чем-то заполнена – хотя бы слэшом (/
Вот несколько примеров удачного заполнения:
User-agent: *
Allow: /
– то есть, разрешение для всех ботов индексировать весь сайт. Подобно:
User-agent: *
Disallow: /
– означает запрет доступа к каталогу /
С другой стороны:
User-agent: *
Disallow:
– ничего не означает, поскольку не указан маршрут после директивы disallow.
Конечно, в одном файле robots.txt строк allow и disallow может быть больше, например:
User-agent: *
Allow: /
Disallow: /
Disallow: /
– то есть, разрешение для роботов сканировать весь сайт, кроме каталогов /
Стоит добавить, что директивы можно использовать не только для целых каталогов, но и для отдельных файлов.
Порядок размещения директив allow и disallow в robots.txt
Если возникает проблема с интерпретацией директив allow и disallow, например, в ситуации запрета доступа к определенному каталогу с исключением для отдельного подкаталога, помните, что директивы разрешения должны находиться над директивами запрета:
User-agent: *
Allow: /
Allow: /
Disallow: /
User-agent: Ahrefsbot
Disallow: /
User-agent: MJ12bot
Disallow: /
Пример выше также демонстрирует использование отдельных правил для отдельных ботов – так вы «просите» роботов Ahrefs и Majestic SEO не сканировать ваш сайт.
Директива Sitemap
Помимо «приглашений и предложений» пропустить каталоги, файл robots.txt можно использовать для того, чтобы показать роботам размещение карты сайта. Для этого необходимо использовать директиву sitemap, после которой должна размещаться вся карта. Ниже находится пример такой директивы:
Sitemap: http://
Конечно, можно указать больше карт – это может быть полезно для очень сложных сайтов.
Директива Crawl-delay
У очень больших сайтов часто возникает проблема – с одной стороны, владелец может хотеть индексировать весь сайт, а с другой стороны – чрезмерная активность поисковых роботов может потреблять немало трансфера и постоянно нагружать сервер новыми запросами. Для решения этой проблемы было создано специальную директиву crawl-delay.
Она используется для информирования роботов от том, что они должны загружать новые файлы не чаще чем каждые х секунд, что в итоге растягивает работу робота по времени.
User-agent: *
Crawl-delay: 2
– то есть, загрузка новых документов происходит каждые две секунды.
Стоит помнить о том, что большинство поисковых систем рассматривает эту директиву как необязательную, часто полностью игнорируя ее. На протяжении некоторого времени Google указывал на отсутствие необходимости директивы, а в июле 2019 прозвучало официальное заявление про отказ от ее поддержки. В Bing заявили, что запись сканирует BingBot, а его значение должно находиться в рамках от 1 до 30. Директиву теоретически поддерживает Yandex, однако на практике бывает по-разному.
Интересно то, что чешская поисковая система Seznam предлагает использовать другую директиву, именно – request-rate, и придать ей значение в виде «количество документов – слэш – число и знак (s как секунды, m как минуты, h как часы и дни, каждый раз без пробелов после номера)». Пример такой директивы:
User-agent: SeznamBot
Request-rate: 500/
или:
User-agent: SeznamBot
Request-rate: 100/
В Seznam заявляют, что директива не должна требовать индексации, которая с каждым документом замедляется на 10 секунд.
Директива Clean-param
Clean-param – довольно интересная директива. К сожалению, это общий стандарт. Ее учитывают поисковые боты Yandex, разрешая обходить параметры, связанные с адресами маршрутов.
Как это работает? Допустим, ваш сайт содержит такие адреса:
domain.com/
domain.com/
domain.com/
Что делать, если переменная background лишь изменяет вид страницы, которая всегда содержит один и тот же контент? В таких случаях Yandex предлагает использовать clean-param. Соответствующая запись может иметь такой вид:
User-agent: Yandex
Clean-param: background/
– то есть, все три адреса из предыдущего примера могут индексироваться как:
domain.com/
Как видите, эта директива более удобна, ведь ее можно сузить до определенных каталогов.
Директива Host
Стандарт robots.txt имеет в своем перечне команду host. Ее игнорируют большинство поисковых систем, однако на страницах справки Yandex о ней упоминается несколько раз, хотя на сегодняшний день описание директивы отсутствует.
Директива host используется (либо использовалась) для обозначения избранного домена в случае наличия нескольких сайтов-реплик, размещенных на разных адресах. Важно то, что в одном файле robots.txt должна находиться лишь одна такая директива (все следующие будут игнорироваться), а запись домена после директивы host не должна содержать ошибок или номеров порта протокола.
Пример:
Host: domain.com
К сожалению, мы не знаем работает ли директива до сих пор, но можем допустить, учитывая изобретательность специалистов по позиционированию, существование тенденции к проведению разнообразных экспериментов с размещением директивы на доменах, отличающихся от тех, на которых она должна находиться. Радостью для «простых веб-мастеров» будет информация о том, что в Yandex, обращаясь к вопросам директив, объявили host «предложением» для роботов – значит, не считали ее обязательной.
Ошибки в robots.txt и их последствия
Хотя содержимое файла robots.txt может помочь «найти общий язык» с поисковыми роботами, оно также может и навредить. Как именно? Через исключение из поиска контента, который обязан появиться в индексе. В результате можно получить значительные потери в показателях видимости в результатах поиска. Особенно это относится к файлам robots.txt с множеством записей, касающихся разных подкаталогов – в таких случаях очень легко сделать ошибку в записях и выключить слишком много разделов сайта.
Вторая основная ошибка – это охват всех изображений, CSS-стилей и файлов JavaScript директивой disallow. Это может показаться хорошей стратегией, но на самом деле есть две причины того, почему это ошибочное мнение. Во-первых, в большинстве случаев возможность найти сайт по результатам поиска изображений является хорошим показателем (конечно, можно запретить доступ к, например, широкоформатными версиям изображений, на что мы уже обращали внимание ранее в этой статье).
Вторая причина более важная – рендеринг сайта ботом Google. Запретив боту доступ к файлам, важным для конечного вида сайта, он выполнит рендеринг без них, а позже будет считать сайт незавершенным, что соответственно может отобразиться на ранжировании.
Нужно ли обращать внимание на размер файла robots.txt при его создании?
Джон Мюллер (John Mueller) в своем профиле Google+ однажды сообщил о возможности сделать вывод о том, что этот вопрос – риторический, потому что такое увеличение списка директив было бы абсурдным. Однако стоит все же позаботиться о том, чтобы маленький файл robots.txt не стал огромным и остался читабельным для… каждого, кто видит файл и потенциально может дополнить или изменить его.
Однако помните, что речь идет только о приемлемом размере файла для робота Google Bot – для других поисковых систем лимит размера robots.txt может быть иным.
Эффективна ли блокировка с помощью robots.txt?
К сожалению, нет. Во-первых, главные роботы не всегда принимают к сведению директивы (не упоминая отдельные менее популярные способы). Во-вторых, даже ознакомившись с запретом, Google может зайти на сайт и индексировать его, обращая внимание только на заголовок и URL-адрес, иногда добавляя сообщение с информацией о том, что для этого сайта информация недоступна».
Поэтому добраться к сайту из поисковой системы все же возможно, однако маловероятно. Потому что боты и дальше будут сканировать сайты по ссылкам, даже если они больше не генерируют никакой мощности (так званый link juice), а результаты ранжирования не охватывают данные, исходящие из их содержимого.
Что еще стоит знать про robots.txt?
Желая ограничить индексирование определенных частей сайта, всегда можно дополнительно воспользоваться мета-тегом robots, который нужно добавить в часть <HEAD> соответствующей страницы:
<meta name="robots" content="noindex, nofollow" /
– этот метод не является 100% гарантией успеха (более того, он менее удобный), однако посылает роботам дополнительный сигнал.
Что делать, если нужно полностью заблокировать доступ для ботов и случайных пользователей? В такой ситуации вместо пассивных методов, вроде надежды того, что никто не попадет в определенное место, стоит защитить нужный раздел сайта паролем (даже путем использования htaccess).
Теоретически, можно использовать полу-методы, заблокировав например доступ для звонков и определенных адресов и классов IP (тех, которые используют поисковые роботы), однако на практике достаточно пропустить часть адресов и проблема останется – это еще раз подтверждает то, что требование прохождения авторизации способствует полной безопасности.
Итоги
Вернемся к вопросу последствий ошибок в заполнении файла robots.txt. Чтобы вы не вписали в файл, помните про возможные эффекты и… цель. Желая индексировать что-нибудь, обратите внимание на возможные побочные эффекты (пример со сложностью рендеринга сайта ботом от Google). Поэтому если вас беспокоит вопрос безопасности, помните, что запрет индексации для Google не блокирует доступ для автоматических систем веб-скрапинга.
Хотите узнать больше? Просмотрите другие статьи на тему позиционирования в нашей Базе Знаний.