Файл robots.txt для Яндекса и всех, всех всех



Robots.txt1_-300x225 Файл robots.txt для Яндекса и всех, всех всехЛетом 2014 года незаметный прежде файлик robots.txt получил такую порцию пиара, как будто кто-то готовил его к IPO. Началось все с демонстрации неслыханной щедрости Мегафона, решившего, что отправляемые через его сайт смс заслуживают индексации поисковыми системами и всемирной популярности. Ну, то есть, не то, чтобы это было осознанное решение, просто вебмастера ОпСоСа каким-то чудом то ли забыли прописать, то ли вовсе похерили robots.txt.

В итоге, хомячки, желавшие сэкономить пару копеек, узрели свои откровения в выдаче этого вашего Яндекса. Особо усердные товарищи с серча тут же бросились рыскать по всему интернету и нарыли немало интересного, что по идее должно было быть закрыто от индексации. Часто даже в существующих robots.txt правила просто некорректно прописаны, что приводит к попаданию нежелательных страниц в индекс. В сети хватает материалов по синтаксису robotx.txt (в частности есть подробное руководство на эту тему от Яндекса). Они очень полезны в случаях, когда вам надо банально закрыть одну или несколько директорий. Бывают случаи и посложнее, но начнем, пожалуй, с типичных ошибок, которые допускают веб-мастера в файле robotx.txt.

Типичные ошибки в robots.txt

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

– Несоблюдение регистра. Все правила, содержащиеся в robotx.txt регистрозависимы, то есть строки:

Disallow: /Admin
Disallow: /admin

Это совсем не одно и то же. Так что, помни о регистре, веб-мастер!

– Пустые строки в блоках правил. Согласно спецификации, пустая строка означает окончание секции правил. И хотя роботы поисковых систем научились идти дальше, от ошибок в таком случае не застрахован никто. Так что избегайте в своем robots.txt конструкций типа:

User-Agent:*

Disallow: /administrator

Disallow: /component
Disallow: /images

– Расположение директивы Host вверху блока правил. Как и все директивы, которые не имеют однозначного толкования во всех поисковых системах, а директива Host относится именно к таким, она должна быть расположена ниже остальных правил, иначе предсказать поведение роботов, не обрабатывающих ее, становится сложно. Более того, по утверждению Яндекса эта директива является межсекционной и может быть использована, будучи указанной в любом месте файла.

– Отсутствие пустой строки между блоками правил. Перед каждым User-Agent, за исключением того, что в самом начале, должна быть пустая строка. Опять таки, криворукие веб-мастера заставили поисковики перестраховаться и научиться распознавать такие штуки, но вероятность ошибки при разборе файла роботами возрастает. Оно вам надо?

robots.txt для Яндекса

Робот Яндекса обрабатывает директивы также как и роботы остальных поисковиков. Но есть
несколько тонкостей, на которые стоит обратить внимание. Яндекс не был бы Яндексом,
если бы не придумал чего-нибудь своего. В данном случае Яндекс сподобился придумать
директиву, которую никто кроме его роботов не обрабатывает:

Host: www.site.ru

И, кстати, если Яндекс уже определил зеркала, это все равно не гарантирует корректной обработки этой директивы. Известны случаи, когда уже склеенные таким образом зеркала внезапно расклеивались и в индексе оказывались обе версии сайта — без и с www. Ну, что тут скажешь? Какой Рунет, такое и зеркало.

Чтобы избежать таких сюрпризов, используйте 301-редирект. О том, как сделать 301 редирект даже в прыжке через голову с переподвыподвертом есть очень годная статья у Деваки.

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

User-Agent: Yandex
Disallow: /admin
Host: www.site.ru

User-Agent: *
Disallow: /admin

Учтите, что робот, найдя первый подходящий ему блок правил, обработает его и не обратит внимания на все остальные. Таким образом, если вы прописываете блок правил для отдельного робота, ставьте его всегда выше блока правил для всех роботов.

Также Яндекс в последнее время озаботился правильным прочтением robots.txt своими «паучками» (видимо, по следам конфликта с Мегафоном) и буквально в ближайшем будущем станет обрабатывать правила по длине префикса URL’а (от большего к меньшему), что позволит привести обработку robots.txt к международному стандарту. Правда, зная Яндекс, чует мое сердце, что глюков не оберешься, так что ставьте в закладки http://webmaster.yandex.ua/delurl.xml. Возможно, оно вам пригодится. Ну и проверяйте в инструментах для веб-мастеров корректность написания вашего robots.txt :)

Интересные случаи

Как уже говорилось выше, правила robots.txt очень просты. Но как быть, если вам надо закрыть какую-либо отдельную директорию, но при этом открыть для индексации вложенный в нее каталог? Или, вот, например, как это модно сейчас говорить, кейс из реальной жизни: сайт доступен на трех языках, каждый язык расположен в директории с соответствующим индексом (/ru/, /ua/, /en/), но при этом в корне / присутствует копия сайта на русском языке. То есть, в индексе присутствуют дублированные страницы вида:

site.ru/bla-bla-bla.html
site.ru/ru/bla-bla-bla.html

Задача: закрыть от индексирования все страницы в корневом каталоге, кроме главной, открыть для индексации все страницы в директориях /ru, /ua/, en.
Решение:

Allow: /ru/
Allow: /ua/
Allow: /en/
Disallow: /*.html$

Таким образом, страницы вида

site.ru
site.ru/ru/bla-bla.html
открыты для индексации, а вот нежелательные дубли:
site.ru/bla-bla.html — закрыты.
В то же время главная страница сайта без всяких индексов — site.ru/ – доступна для индексации.

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

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

Disallow: /base/*/service-by-type.asp?

К слову, если не используется знак окончания строки «$», считается, что в конце правила стоит звездочка, так что в этом случае закрыты все динамические страницы, содержащие «service-by-type.asp?» в каталоге /base.

А какие у вас проблемы возникали с формированием правил для robots.txt? Делитесь ими в комментариях, а самыми интересными будет пополняться эта статья.



Похожие записи



Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *