Вилл Критчлоу — генеральный директор небольшой компании, занимающейся поисковой оптимизацией и веб-разработкой, специалист в области SEO и маркетинга. |
Одна из самых, на мой взгляд, лучших сторон развития интернета — рост количества и качества образовательных ресурсов. В 1998 году, когда я посещал колледж, было очень интересно искать разные журналы, иметь доступ к дорогим учебникам и скачивать открытое программное обеспечение. Сегодня такие технологии, как Khan Academy, iTunesU, Treehouse и Codecademy выводят обучение на новый уровень.
Особенно мне нравятся возможности интерактивного обучения с помощью таких ресурсов, как Codecademy. Такой способ, разумеется, лучше всего подходит для изучения вещей вроде языков программирования — в этих темах компьютеры хорошо справляются с анализом «ответов». Это заставило меня задуматься, что в интернет-маркетинге можно отнести к такой области.
Стороны маркетинга, хорошо поддающиеся компьютерному анализу:
- Поисковые запросы — в частности, те, что больше похожи на программные конструкции, чем на запросы на естественном языке, например, [site:distilled.net -inurl:www]
- Анализ внутренних настроек сайта — пользовательские переменные, виртуальные просмотры, настройка учета для е-коммерческих сайтов и тому подобное
- Синтаксис и правила Robots.txt
- Конструкции HTML, такие как ссылки, мета-информация страницы, атрибуты alt и т.п.
- Такие навыки, как работа с формулами Excel, которые многие из нас широко используют в работе
Я постепенно выстраиваю интерактивную обучающую среду в стиле Codecademy для всех этих вещей на DistilledU, нашей онлайн-платформе для обучения, но многие из них доступны только для платных аккаунтов. И я подумал, что неплохо будет начать 2013 год, вынеся один из таких модулей на пределы платной зоны и обеспечив доступ к ним всем. Я выбрал robots.txt one, потому что отклики свидетельствуют, что это один из модулей, дающих пользователям больше всего в плане обучения.
Кроме того, несмотря на годы опыта, за время написания этого модуля я открыл для себя некоторые вещи, которых не знал раньше (в частности о приоритетах разных правил и о взаимодействии специальных символов с явно выраженными правилами). Надеюсь, это будет полезно и многим из вас также — как новичкам, так и экспертам в индустрии.
Интерактивное руководство к Robots.txt
Robots.txt — это незашифрованный файл, расположенный в корне домена (например, www.example.com/robots.txt). Это общепризнанный стандарт, и он позволяет вебмастерам управлять всеми видами автоматического использования сайта, не только поисковиками.
Помимо чтения данных о протоколе, robots.txt — одна из самых доступных областей SEO, поскольку можно получить доступ к robots.txt любого сайта. После прохождения данного модуля вы поймете, как важно понимать robots.txt некоторых крупных сайтов (например, Google и Amazon).
Основное исключение
Наиболее распространенный вариант использования robots.txt — для блокировки доступа роботов к определенным страницам. Самая простая версия — строка с текстом User-agent: *. Последующие строки содержат определенные исключения, которые действуют в совокупности.
Исключение каталогов
Если в конце исключающей команды поставить завершающий слэш («/»), например, Disallow: /private/, то все внутри каталога будет заблокировано.
Разрешение определенных путей
Помимо запрета на определенные пути, синтаксис robots.txt позволяет давать разрешение на определенные пути. Обратите внимание, что по умолчанию доступ роботу открыт, так что, если файл не содержит никаких правил, все пути открыты.
Основной способ использования Allow: директива — замещение более общего Disallow: директивы. Правило предшествования гласит, что «наиболее определенное правило, основывающееся на длине элемента [пути], перевешивает менее определенное (более короткое) правило. Порядок очередности правил со специальными символами не определен».
Мы собираемся продемонстрировать это, изменив исключение для папки /secret/ ниже с помощью правила Allow:, открывающего доступ к /secret/not-secret.html. Поскольку это правило длиннее, оно имеет приоритетное значение.
Ограничение для определенных пользовательских агентов
Все каталоги директивы, с которыми мы работали, равным образом применяются ко всем роботам. Это определяется элементом User-agent: *, которым начинаются наши команды.
Добавление нескольких блоков
Возможно наличие нескольких блоков команд, направленных на различные группы роботов. Пример с robots.txt ниже дает Google-боту доступ ко всем файлам, кроме тех, которые находятся в каталоге /secret/, и блокирует доступ остальным роботам ко всему сайту. Обратите внимание, что, поскольку имеется группа каталогов, предназначенных именно Google-боту, Google-бот будет полностью игнорировать каталоги, предназначенные для всех роботов. Это значит, что невозможно сформировать такие исключения на основе общих исключений. Если ваши действия нацелены на определенных роботов, для каждого блока необходимо указывать отдельное правило.
Использование более определенных пользовательских агентов
Бывают случаи, когда необходимо управлять поведением определенных роботов, например, робота Google Images, отдельно от основного Google-бота. Чтобы добиться этого в robots.txt, эти роботы должны подчиняться определенной строке пользовательского агента, которая предназначена для них. Так, например, если имеется блок указаний для googlebot и блок указаний для googlebot-images, то робот, работающий с изображениями будет подчиняться только последнему блоку. Если нет определенного набора указаний для googlebot-images (или любого другого специального Google-бота), то они подчиняются общим указаниям для Google-ботов.
Обратите внимание, что робот всегда подчиняется только одной группе указаний — невозможно применять директивы в совокупности для всех групп.
При следующем robots.txt googlebot-images будет следовать указаниям для googlebot (иными словами, не будет индексировать папку /secret/).
Основные специальные символы
Замыкающие специальные символы (маркированные *) игнорируются, поэтому Disallow: /private* — то же самое, что Disallow: /private. Специальные символы, однако, полезны, если требуется привязать одновременно несколько видов страниц. С помощью звездочки (*) можно привязать 0 или больше объектов с любыми допустимыми характеристиками (включая /, ? и т.п.).
Например, Disallow: news*.html блокирует:
- news.html
- news1.html
- news1234.html
- newsy.html
- news1234.html?id=1
Но не блокирует:
- newshtml (не хватает «.»)
- News.html (привязка чувствительна к регистру)
- /directory/news.html
Блокирование определенных параметров
Один из распространенных вариантов использования специальных символов — для блокировки определенных параметров. Например, один из способов работы с фасетной навигацией — блокировка сочетаний из 4 и более ячеек. Этого можно добиться, заставив систему добавлять параметр ко всем комбинациям из 4 и более ячеек, такую, как, например, ?crawl=no. Это будет означать, например, что URL для 3 ячеек будет /facet1/facet2/facet3/, но при добавлении четвертой становится /facet1/facet2/facet3/facet4/?crawl=no.
Правило блокирования этого для роботов должно искать *crawl=no (не *?crawl=no, потому что строка запроса ?sort=asc&crawl=no будет недействительной).
Привязка целых имен файлов
Как мы видели в примере с исключением папок (где схема вроде /private/ привязывает пути файлов, содержащихся в этой папке, например, /private/privatefile.html), по умолчанию указываемые нами в robots.txt схемы привязывают только часть имени файла и допускают любое окончание, даже без специальных символов.
Бывают случаи, когда необходимо ввести схему, привязывающую все имя файла целиком (со специальными символами или без них). Например, следующий robots.txt выглядит так, как будто он запрещает индексацию файлов jpg, но на самом деле он также не дает индексировать файл с названием explanation-of-.jpg.html, так как это название тоже укладывается в эту схему.
Если вы хотите, чтобы схема подходила к окончанию имени файла, то она должна оканчиваться знаком $, который означает «конец строки». Например, если изменить исключение с Disallow: /private.html на Disallow: /private.html$, то схема не будет распространяться на /private.html?sort=asc, а следовательно, эта страница может быть проиндексирована.
Добавление XML карты сайта
Последняя строка во многих файлах robots.txt — это директива, указывающая расположение XML карты сайта. Есть много причин включить карту сайта и указать ее в файле robots.txt. Подробнее о XML картах сайта читайте здесь.
Указать расположение карты сайта можно с помощью директивы Sitemap: <path>.