Содержание
Файл robots.txt — это один из основных способов сообщить поисковой системе
, к каким частям сайта она может получить доступ, а к каким нет. Данное руководство охватывает практически все возможные нюансы, связанные с robots.txt. Несмотря на то, что настройка файла robots.txt выглядит простой и незамысловатой, все-таки ошибки в нем могут нанести серьезный вред сайту.
Что такое файл robots.txt?
Robots.txt — это текстовый файл, с точным синтаксисом, который предназначен для чтения поисковыми системами. Эти системы также называют роботами, отсюда и одноименное название файла. Точность синтаксиса объясняется тем, что файл читается компьютером.
Robots.txt (известный также как «протокол исключений» (Robots Exclusion Protocol), был согласован разработчиками первых поисковых роботов. Файл не был стандартизирован какой-либо официальной организацией, но для всех крупных поисковых систем robots.txt, по сути, является стандартом.
Функции robots.txt
Поисковые системы индексируют веб-сайты за счет сканирования страниц. При этом осуществляются переходы по ссылкам с сайта «А» на сайт «Б», «В» и т.д. Прежде чем поисковая система начнет сканирование любой страницы в домене, с которым она прежде не сталкивалась, происходит открытие файла robots.txt этого домена. В свою очередь, файл robots.txt сообщает поисковой системе, какие URL на этом сайте разрешены для индексации.
Поисковая система кэширует контент robots.txt и обновляет его несколько раз в день, таким образом изменения отображаются очень быстро.
Где хранить файл robots.txt?
Файл robots.txt должен всегда находиться в корневой папке домена. Так, если адрес домена — www.example.com, тогда файл должен присутствовать здесь: http://www.example.com/robots.txt.
Если домен отображается без www, таким же должен быть и robots.txt. Это же касается http и https.
Еще очень важно, чтобы файл назывался именно как robots.txt.
Плюсы и минусы robots.txt
Плюс: бюджет
Каждый сайт допускает сканирование определенного количества страниц. Блокируя доступ поисковой системы к разделам сайта, вы тем самым экономите средства, которые могут пойти на другие разделы. В особенности на сайтах, где требуется достаточно много работы по части SEO, может быть очень уместно сразу же заблокировать доступ к определенным разделам.
Блокировка параметров запросов
Одна из ситуаций, когда могут понадобиться дополнительные средства — сайт использует множество параметров в строке запроса для фильтрации и сортировки. Допустим, есть 10 разных параметров запросов и разных значений, которые могут использоваться в любой комбинации. В результате получаются сотни, если не тысячи вариаций. Блокировка всех параметров запросов позволит сделать так, чтобы поисковая система сканировала только основные URL сайта.
Линия, блокирующая все URL сайта, с запросом:
Disallow: /*?*
Минус: страница не удаляется из результатов поиска
Файл robots.txt сообщает поисковому пауку, в какую часть сайта он не может проникнуть. Но невозможно указать поисковой системе на то, какие URL не следует показывать в поисковых результатах. Это означает, что если поисковой системе запретить доступ к определенному URL, ссылка все еще может появляться в поисковых результатах. Если поисковая система обнаружит достаточно много ссылок, ведущих к этому URL, он будет добавлен, но при этом поисковая система не будет «знать» что на этой странице.
Если вы хотите сделать так, чтобы страница не появлялась в результатах поиска, понадобится атрибут noindex. Это означает, что у поисковой системы должна быть возможность индексировать страницу и найти атрибут noindex, поэтому страница не должна блокироваться в файле robots.txt.
Синтаксис robots.txt
WordPress robots.txt
Файл robots.txt включает в себя один и больше блоков директив, каждый начинается с линии user-agent. «User-agent» — это название специфического робота. У вас может быть один блок для всех поисковых систем, использующих групповой символ для user-agent, или специфические блоки для поисковых систем. Поисковый робот всегда будет выбирать наиболее точное название блока.
Эти блоки выглядят следующим образом:
User-agent: *
Disallow: /
User-agent: Googlebot
Disallow:
User-agent: bingbot
Disallow: /not-for-bing/
Директивы Allow и Disallow не должны быть чувствительны к регистру (прописных или строчных букв). Но при выборе значения параметров все же следует учитывать состояние регистра. /photo/ — не то же самое, что /Photo/. Директивы пишутся прописными для удобочитаемости файла.
Директива User-agent
Первая часть любого блока директив — user-agent — идентифицирует определенного робота/паука. Поле user-agent сопоставляется со специфическим полем user-agent робота (обычно более длинным).
Например:
Mozilla/5.0 (compatible; Googlebot/2.1;
+http://www.google.com/bot.html)
Относительно простой линии User-agent: Googlebot будет вполне достаточно, если вы хотите сообщить роботу о том, что необходимо сделать.
У большинства поисковых систем имеется несколько роботов, которые используются для индексации, рекламных кампаний, изображений, видео и т.д.
Поисковые системы всегда будут выбирать самые специфические блоки директив, из тех, которые обнаружат. Например, есть три набора директив: одна для *, одна для Googlebot и еще одна — для Googlebot-News. Если блок определяет, кому принадлежит юзер-агент Googlebot-Video, будут соблюдены ограничения Googlebot. Бот с юзер-агентом Googlebot-News будет использовать более специфические директивы Googlebot-News.
Самые распространенные юзер-агенты для поисковых роботов:
Ниже представлен список юзер-агентов, которые можно использовать в файле robots.txt для сопоставления с самыми распространенными поисковыми системами:
Поисковая система | Поле | User-agent |
Baidu | General | baiduspider |
Baidu | Images | baiduspider-image |
Baidu | Mobile | baiduspider-mobile |
Baidu | News | baiduspider-news |
Baidu | Video | baiduspider-video |
Bing | General | bingbot |
Bing | General | msnbot |
Bing | Images & Video | msnbot-media |
Bing | Ads | adidxbot |
General | Googlebot | |
Images | Googlebot-Image | |
Mobile | Googlebot-Mobile | |
News | Googlebot-News | |
Video | Googlebot-Video | |
AdSense | Mediapartners-Google | |
AdWords | AdsBot-Google | |
Yahoo! | General | slurp |
Yandex | General | yandex |
Директива Disallow
Вторая линия в любом блоке директив — это линия Disallow. У вас может быть одна или несколько таких линий, определяющих те разделы сайта, к которым робот определенной системы не может получить доступ. Пустая линия Disallow означает, что запрещенных разделов нет, и что поисковому роботу предоставлен доступ ко всему сайту целиком.
User-agent: *
Disallow: /
Эта линия блокирует доступ всех поисковых систем к вашему сайту.
User-agent: *
Disallow:
Эта линия разрешит всем поисковым системам сканировать весь ваш сайт.
User-agent: googlebot
Disallow: /Photo
Эта линия запретит Google сканировать директорию Photo на вашем сайте и все ее содержимое. Все поддиректории /Photo также не будут сканироваться. Но эта линия не закроет Google доступ к директории photo, т.к. линии учитывают состояние регистра прописных и строчных символов.
Как использовать групповые символы/регулярные выражения
«Официально» стандарт robots.txt не поддерживает ни регулярные выражения, ни групповые символы. Однако все крупные поисковые системы их понимают. А это значит, что вы можете использовать такие линии, чтобы блокировать группы файлов:
Disallow: /*.php
Disallow: /copyrighted-images/*.jpg
В приведенном выше примере * расширяется до названия совпадающего файла. Остальная часть лини не чувствительна к регистру, поэтому не будет блокироваться доступ поискового робота к файлу /copyrighted-images/example.JPG.
Некоторые системы, такие как Google, разрешают использование более усложненных регулярных выражений. Однако стоит учитывать, что не все поисковые системы способны понять такую логику. Самая полезная особенность — $, что указывает на конец URL.
Disallow: /*.php$
Это означает, что /index.php нельзя индексировать, но /index.php?p=1 — возможно. Конечно, данная особенность применима лишь особых ситуациях, и ее использование сопряжено с определенным риском: легко допустить ошибку и разблокировать то, что не нужно.
Нестандартные директивы robots.txt
Кроме директив Disallow и User-agent существуют ряд других, которые вы можете использовать. Эти директивы не поддерживаются всеми краулерами поисковых систем, поэтому следует учитывать такое ограничение.
Директива Allow
Это неоригинальная «спецификация», тем не менее большинство поисковых систем ее понимают, что дает возможность формировать очень простые и читабельные директивы:
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Единственно возможный способ достичь того же результата без директивы allow — специально добавить disallow к каждому файлу в папке wp-admin.
Директива noindex
Это одна из наименее известных директив, но Google ее фактически поддерживает. Однако использование метода блокировки, который только лишь убирает страницу из Google, означает, что эта страница останется открытой для других поисковых систем.
Стоит иметь в виду, что директива noindex официально не поддерживается Google, т.е. если она работает сейчас, в будущем ситуация может измениться.
Директива host
Поддерживается Яндексом (но не Google, даже несмотря на то, что в некоторых публикациях утверждается обратное), эта директива позволяет решить, будет ли поисковая система высвечивать адрес example.com или www.example.com.
Простой линии host: example.com будет достаточно.
На эту директиву не стоит полагаться, т.к. она поддерживается только Yandex. К тому же она не позволяет выбрать — http или https. Более подходящее решение, которое применимо для всех поисковых систем, — перенаправление 301 для всех названий хостов, которые вы не хотите индексировать.
www.example.com -> example.com
Директива crawl-delay
Директива crawl-delay поддерживается Yahoo!, Bing и Yandex — она позволяет несколько замедлить эти три системы, которые порой проявляют чрезмерную активность по части сканирования сайтов. Способы чтения директив у этих поисковых систем разные, но конечный результат принципиально не отличается.
crawl-delay: 10
Эта линия приведет к тому, что Yahoo! и Bing будет ждать 10 секунд после сканирующего действия.
Yandex будет получать доступ к вашему сайту через каждые десять секунд.
Устанавливая crawl delay на 10 секунд, вы позволяете этим поисковым системам индексировать только 8,640 страниц в день. Для маленького сайта это довольно много, но не для большого. С другой стороны, если вы не получаете трафик от упомянутых систем, это неплохой способ снизить нагрузку на полосу пропускания.
Директива sitemap для XML Sitemaps
С помощью директивы sitemap вы можете сообщить поисковой системе (в частности, Bing, Yandex и Google), где расположены XML-файлы. Конечно же, у вас есть возможность предоставить XML Sitemaps каждой поисковой системе, используя соответствующий инструментарий веб-мастера. Инструменты веб-мастера поисковых систем предоставляют очень ценную информацию о сайте. Если вы не хотите этого делать, как альтернативный вариант можете добавить sitemap в robots.txt.
Валидация robots.txt
Существует множество инструментов, которые позволяют провести валидацию robots.txt. Однако когда необходимо подтвердить директивы, лучше обратиться к первоисточнику. У Google имеется тестовый инструмент для robots.txt в Google Search Console (меню Crawl):
И, конечно же, целесообразнее тщательно протестировать изменения перед их запуском.
Владельцу сайта нужно позаботиться о том, чтобы в поиск не попала конфиденциальная информация — например, личные данные пользователей, их переписка или счета. Такие страницы нужно запрещать индексировать, рекомендуется закрывать страницы со служебной информацией и страницы-дубликаты так как это напрямую влияет на продвижение сайта в поиске.