Привет, ребята. Как и обещал, сегодня пойдет речь про тонкости и особенности индексации сайтов в поисковых системах. Мысли к написанию данного поста мне навеяло развязное поведение роботов Google – наверное, многие заметили, что Гугл индексирует все, что ему только вздумается, не смотря на различные запреты, например, в robots.txt.
Но ведь все мы хотим сделать своим сайтам «красиво», чтобы количество полезных существующих (загруженных) роботом страниц равнялось количеству проиндексированных поисковиком, а количество страниц из дополнительного индекса Google (supplemental) сводилось к минимуму.
Так вот из-за «произвола» роботов и начинают, откуда ни возьмись появляться дубли страниц, вылезать различные проблемы и все такое. Ну и начал я копать и изучать подробнее.
Блокировка и удаление страниц с помощью файла robots.txt
Предлагаю начать с разговора о файле robots.txt, как о самом популярном способе запрета индексации страниц сайта.
Сразу приведу несколько выдержек из справки для вебмастеров от Google:
Файл robots.txt ограничивает доступ роботов, сканирующих Интернет для поисковых систем, к вашему сайту. Перед обращением к страницам сайта эти роботы автоматически ищут файл robots.txt, который запрещает им доступ к определенным страницам.
Файл robots.txt необходим только в том случае, если на вашем сайте есть содержание, которое не следует включать в индекс поисковых систем. Если вы хотите, чтобы поисковые системы включали в свои индексы все содержание вашего сайта, файл robots.txt (даже пустой) не требуется.
Хотя Google не сканирует и не индексирует содержание страниц, заблокированных в файле robots.txt, URL-адреса, обнаруженные на других страницах в Интернете, по-прежнему могут добавляться в индекс. В результате URL страницы, а также другие общедоступные сведения, например текст ссылок на сайт или заголовок из каталога Open Directory Project (www.dmoz.org), могут появиться в результатах поиска Google.
Вот, последняя выдержка самая интересная, из которой понятно, что Google может игнорировать директивы из файла robots.txt. И, как показывает практика, в индекс очень часто попадают адреса страниц, запрещенные в robots.txt, даже при условии отсутствия на них внешних/внутренних ссылок.
Кстати, в руководство Гугла стоило бы добавить, что не только «URL-адреса, обнаруженные на других страницах в Интернете», но и внутренние ссылки приводят к индексации запрещенных страниц, но об этом чуть позже.
На удивление, информация обо всех адресах хранится в Гугле, наверное, веками. У меня есть сайт, на котором уже лет 5 назад сменилась CMS, а вметсе с ней и все url, и старых адресов уже нигде нет, но Гугл помнит эти адреса если пошерстить доп. индекс :)
В Яндексе с этим дела получше, все страницы, закрытые через роботс, НЕ попадают в основной индекс Яндекса, однако роботом просматриваются и загружаются, это наглядно видно в панели вебмастера, где, например, можно наблюдать такое: Загружено роботом — 178046 / Страниц в поиске — 72437. Разумеется, причина такого расхождения аж в 100к страниц не полностью следствие запрещения страниц через robots.txt, здесь есть и 404 ошибки, например, и другие неполадки сайта, которые могут случаться по различным причинам.
Но это не страшно, вот выдержка из руководства для вебмастеров от Яндекса:
В разделе «Исключённые страницы» отображаются страницы, к которым обращался робот, но по тем или иным причинам принял решение не индексировать их. В том числе, это могут быть уже несуществующие страницы, если ранее они были известны роботу. Информация об причинах исключения из индекса хранится в течение некоторого времени, пока робот продолжает их проверять. После этого, если страницы по-прежнему недоступны для индексирования и на них не ведут ссылки с других страниц, информация о них автоматически удаляется из раздела «Исключённые страницы».
Наличие и количество исключенных страниц не влияет на ранжирование сайта в поиске по запросам.
По аналогии с Гуглом тут имеет место быть влияние внешних/внутренних ссылок.
Резюмируя вышесказанное:
Для Яндекса robots.txt запрещает индексацию (в данном случае под этим словом подразумеваем отображение в результатах поиска) закрытых страницы, но не запрещает их загрузку роботами. Такие страницы видны только владельцу сайта в панели вебмастера в разделе «Исключенные страницы».
Для Google robots.txt частично запрещает индексацию страниц, робот их загружает и может отображать в дополнительном индексе, закрытые страницы не отображаются в основном индексе, но все они доступны при изучении дополнительной выдачи (supplemental). Насколько это плохо или хорошо — не известно — в мануалах Гугла такой информации не нашлось. Надеюсь, что это никак не влияет на ранжирование в плохую сторону.
Рекомендую к прочтению:
- Мануал Яндекса «Использование robots.txt»
- Мануал Google «Блокировка и удаление страниц с помощью файла robots.txt»
Плавно переходим к следующему пункту про метатег robots.
Использование метатега robots для блокирования доступа к сайту
Данный метод запрета индексации страниц сайта встречается гораздо реже в повседневной жизни. Как следствие происходит это из-за что разработчики большинства CMS просто не обращают на это внимания/забывают/забивают. И тогда ответственность за поведение роботов на сайте полностью ложится на плечи вебмастеров, которые в свою очередь обходятся простейшим вариантом – robots.txt.
Но продвинутые вебмастера, которые в теме особенностей индексации сайтов и поведения роботов, используют метатег robots.
И снова небольшая выдержка из руководства от Google:
Чтобы полностью исключить вероятность появления контента страницы в индексе Google, даже если на нее ссылаются другие сайты, используйте метатег noindex. Если робот Googlebot начнет сканировать страницу, то обнаружит метатег noindex и не станет отображать ее в индексе.
Внушает оптимизм, не правда ли? И еще:
Обратите внимание: чтобы увидеть тег noindex, мы должны просканировать вашу страницу, поэтому существует небольшая вероятность, что поисковый робот Googlebot не увидит метатег noindex и не отреагирует на него. Кроме того, если вы заблокировали эту страницу с помощью файла robots.txt, мы также не сможем увидеть этот тег.
Следовательно, все страницы, которые мы хотим запретить к индексации, а так же исключить их из индекса, если они уже проиндексированы (насколько я понял, это касается и доп. индекса Гугла), необходимо на всех таких страницах поместить метатег <meta name="robots" content="noindex">. Что еще более важно, эти самые страницы не должны быть закрыты через robots.txt!
Немного побуду кэпом и расскажу, какие еще значения (content="…") может принимать мататег robots:
- noindex – запрещает индексацию страницы
- nofollow – запрещает роботу следовать по ссылкам на странице
- index, follow – разрешает роботу индексацию страницы и переход по ссылкам на этой странице
- all – аналогично предыдущему пункту. По большому счету, бесполезная директива, эквивалентна отсутствию самого метатега robots
- none – запрет на индексацию и следование по ссылкам, эквивалентно сочетанию noindex,nofollow
- noarchive – запрет поисковику выводить ссылку на кеш страницы (для Яндекса это «копия», для Google это «сохраненная копия»)
Так как в справке Яндекса нижеследующие параметры не описаны, то они, скорее всего, там и не сработают. Так что эти параметры только для Google:
- noimageindex – запрет на индексацию изображений на странице
- nosnippet – запрет на вывод сниппета в результатах поиска (при этом так же удаляется и сохраненная копия!)
- noodp – запрет для Google на вывод в качестве сниппета описания из каталога DMOZ
Вроде все, осталось только сказать, что количество пробелов, положение запятой и регистр внутри content="…" здесь не играет никакой роли, но все же для красоты лучше писать как положено (с маленькой буквы, без пробелов и разделяя атрибуты запятой).
Короче говоря, чтобы полностью запретить индексацию ненужных страниц и появление их в поиске необходимо на всех этих страницах разместить метатег <meta name="robots" content="noindex,nofollow">.
Так что если вам известны все страницы (наборы страниц, категории и т.д.), которые не должны попасть в индекс и есть доступ к редактированию их содержания (конкретно, содержания внутри тега <head> </head>), то можно обойтись без запрещающих директив в файле robots.txt, но разместив на страницах метатег robots. Данный вариант, как вы понимаете, является эффективным и предпочтительным.
Рекомендую к прочтению:
- Мануал Google «Использование метатегов для блокирования доступа к сайту»
- Мануал Яндекса «Методы управления поведением робота»
Итак, у нас остался последний нераскрытый вопрос, и он о внутренних ссылках.
Влияние внутренних ссылок на индексацию сайта
Внутренние ссылки являются основной и практически единственной причиной того, что нам приходится закрывать ненужные и попавшие в индекс страницы разными метатегами и директивами robots.txt. Однако реальность такова, что ненужные роботам страницы очень даже нужны пользователям сайта, а следовательно должны быть и ссылки на эти самые страницы.
А что же делать? При любом варианте запрета индексации ссылок (rel=”nofollow”) и страниц (robots.txt, meta robots), вес сайта просто теряется, утекает на закрытые страницы.
Вариант №1. Большинство распространенных CMS имеют возможность использования специальных тегов (в DLE точно это есть, я сам этим очень активно пользуюсь) при создании шаблонов оформления, которые позволяют регулировать вывод определенной информации. Например, показывать какой-либо текст только гостям или группе пользователей с определенным id и т.д. Если таких тегов вдруг нет, то наверняка на помощь придут логические конструкции (такие конструкции есть в WordPress, а так же форумных движках IPB и vbulletin, опять же, я сам пользуюсь этими возможностями), представляющие из себя простейшие условные алгоритмы на php.
Так вот, логично было бы скрывать неважные и ненужные ссылки от гостей (обычно эту роль играют и роботы при посещении любого сайта), а так же скрывать ссылки на страницы, которые выдают сообщение о том, что вы не зарегистрированы, не имеете прав доступа и все такое. При необходимости можно специально для гостей выводить блок с информацией о том, что после регистрации у них появится больше прав и возможностей, а значит и соответствующие ссылки появятся ;)
Но бывают такие моменты, что ссылку нельзя скрыть или удалить, потому что она нужна, и нужна сразу всем – гостям, пользователям… А вот роботам не нужна. Что делать?
Вариант №2. В редких случаях (хотя последнее время все чаще и чаще) бывает необходимо, чтобы ссылки или даже целые блоки сайта были недоступны и невидны роботам, а вот людям отображались и работали в полной мере, вне зависимости от групп и привилегий. Вы уже, наверное, догадались, что я говорю про сокрытие контента при помощи JavaScript или AJAX. Как это делается технически, я не буду расписывать, это очень долго. Но есть замечательный пост Димы Dimox’а о том, как загрузить часть контента с помощью AJAX на примере WordPress (линк). В примере рассказывается про подгрузку целого сайдбара, но таким же методом можно подгрузить одну только ссылку, например. В общем, немного покопаетесь и разберетесь.
Так вот, если хочется какую-то часть контента роботам не показывать, то лучший выбор – JavaScript. А после того как провернете всю техническую часть, проверить это на работоспособность поможет замечательный плагин для FireFox под названием QuickJava. Просто с помощью плагина отключите для браузера обработку яваскрипта и перезагрузите страницу, весь динамически подгружаемый контент должен пропасть ;)
Но помните, что тут тоже надо знать меру!
И, кстати, еще парочка интересных моментов, которые необходимо знать:
Яндексу в индексации сайтов помогает Яндекс.Метрика, которая автоматически пингует в индекс все посещенные страницы, на которых установлен код Метрики. Но эту функцию можно отключить при получении кода счетчика, установив соответсвующую галочку.
Возможно как то в индексации замешаны Яндекс.Бар и сборка браузера Хром от Яндекса, но в этом я не уверен.
Но вот для Гугла есть информация, что роль поискового робота выполняет сам браузер Google Chrome. Такие уж они хитрецы.
Так что, как видим, скрыть информацию от роботов почти невозможно, если не предпринимать специальные меры.
Итоги — или что сделать, чтобы стало все круто?
Наконец-то я могу подвести итог сегодняшнего огромного поста, и он будет кратким.
Чтобы улучшить качество индексации сайта, необходимо:
- Скрыть от гостей (к ним относятся и роботы) ссылки, которые им не нужны или не предназначены.
- Ссылки, которые нельзя удалить или спрятать от живых посетителей, стоит скрыть и выводить через JavaScript.
- Если ничего из перечисленного невозможно или не получается, то хотя бы необходимо закрыть ссылки на ненужные страницы атрибутом rel=”nofollow”. Хоть польза от этого и сомнительная, но все же…
- Страницы, которые не должны быть проиндексированы и не должны попасть в индекс поисковых систем, стоит запрещать при помощи метатега robots и параметра noindex:
<meta name="robots" content="noindex"> - Страницы, содержащие тег robots не должны быть запрещены к индексации через robots.txt
Что даст нам весь этот «улучшайзинг»:
- Во-первых, чистота индекса сайта, что в наше время очень редко и почти не встречается.
- Во-вторых, быстрота индексации/переиндексации сайта увеличится за счет того, что робот не будет загружать страницы, которые закрыты для него.
- В-третьих, сохранится какая-то часть статического веса сайта, которая раньше утекала по ссылкам на закрытые страницы, а это может положительно отразится на ранжировании сайта.
- В-четвертых, это просто круто и говорит об уровне профессионализма вебмастера.
Фуф, два дня (а точнее — две ночи) писал этот пост и никак не мог дописать, но я это сделал! Потому жду ваших отзывов и комментариев.
Если у кого-то есть практический опыт по теме, обязательно поделитесь им со мной и другими читателями, это будет очень интересно и полезно.
Всем спасибо за внимание и до скорой встречи!
Огромная благодарность, Александр, за отличный пост!!!
А как Вы относитесь к запрету индексации страниц через указанные параметры UGL в Google Webmaster Tools в частности для Гугла? Насколько они в приоритете по сравнению с robots.txt, meta robots? Проводили ли Вы эксперименты с этими параметрами, может есть какие-то полезные наблюдения?
Я этим инструментом пользуюсь, но исключительно чтобы указать, что все эти параметры индексировать не стоит. То есть у меня для всех сайтов стоит запрет для всех параметров, потому что действительно все эти параметры ненужные.
Насколько это в приоритете — не знаю, целенаправленно не изучал. Но могу точно сказать, что совместное использование различных способов (robots.txt, meta robots, запрет в панели вебмастера) мешает само себе. В первую очередь, все портит robots.txt, следовательно, роботы его смотрят в первую очередь.
Есть стопроцентное наблюдение — даже не смотря на запрет параметров в панели вебмастера (а плюс к этому rel="canonical" на целевой странице) url с параметром в адресе попадает в доп выдачу, так как возможно на него есть ссылки, а url запрещен в robots.txt.
Короче говоря, чтобы что-то работало, нельзя эти адреса закрывать в robots.txt
Отличная и очень нужная статья! Очень много интересного и полезного узнал. Спасибо автору!
Прочитал и несколько не пожалел. Узнал во первых многое для себя, а именно, как закрыть от индексации заказные статьи.
Респект автору за его затраченное на прекрасную статью время.
На счёт индексации ссылок в скриптах проводил эксперимент Devaka тут http://devaka.ru/articles/complex-javascript-for-google, который показал, что от робота google сложно что-то скрыть.
Так же последний его гостевой пост с рабочим методом скрытия в скрипте http://devaka.ru/articles/hide-links-from-google
Как всё не предсказуемо, ситуация ровно наоборот : ) Открыл новый сайтик для людей с качественным дизайном и контентом, но уже 3 месяца его упорно не хочет индексировать Яндекс. Хоть убей, не хочет и всё, в техпотдержку писал, вроде начал индексировать, потом выкинул все страницы, проиндексировал заново 5 и на этом всё встало, робот заходит, но индексировать не хочет и всё, даже не знаю что делать.
Так что у кого какие проблемы : )
Тема раскрыта, спасибо автору за отличный пост.
Космос попробуй сделать вывод похожих новостей на этом сайте, или внутреннюю перелинковку, мне это помогло — Яша прошел все страницы, и они влетели в индекс
Да, верно, от Гугла что-то скрыть крайне сложно. Ко всему этому их роботы научились и формы отправлять, представляешь!
Тот вариант, что я упомянул интересен тем, что подгружает на страницу содержание другой страницы, которая может и индексироваться, но ее содержимое не будет принадлежать первой странице. Ну короче, ты понял, я надеюсь ;)
У кого-то проблемы усмирить роботов, а у тебя наоборот... Вариант самый правильный — писать в поддержку, они, как ни странно, помогают!
У меня на сайте есть стриницы, которые по факту являются пустыми и не имеют значения для поисковых систем. То есть в роботсе можно прописать что бы закрыть эти от индексации?
Можно.
Я у себя на сайте закрываю роботом тхт все страницы, которые не нужны для индексации и получается так, что в индексе дублей нет. Насчет внутренних ссылок, у меня блог на DLE, и там есть функция, при помощи которой можно закрыть все внешние ссылки, это позволяет закрыть ссылки от поисковых роботов, но люди по ним могут переходить.
Что касается информации, которую дает Яндекс Вебмастер, то если перейти по этим цифрам, то на странице поиска будет намного меньше загруженных и проиндексированных страниц, а чем это вызвано не понятно.
> функция при помощи которой можно закрыть все внешние ссылки, это позволяет закрыть ссылки от поисковых роботов, но люди по ним могут переходить
Это называется rel="nofollow", и это не закрывает ссылку от роботов, а только дает указание не ходить по ссылке, но это вовсе не говорит о том, что робот по ней не пойдет. Ну и самое печально — вес страницы все равно утекает, есть этот атрибут у ссылки или нет.
> Что касается информации, которую дает Яндекс Вебмастер, то если перейти по этим цифрам, то на странице поиска, будет намного меньше загруженных и проиндексированных страниц, а чем это вызвано не понятно.
Пост мой прочитайте, тогда все будет понятно =)
Да уж, теперь многое проясняется... Будем разбираться
Я так и не понимаю — как же правильно составить этот файл? Многие пишут и все по разному.
Какой "этот файл"? Если речь о robots.txt, то он составляется индивидуально для каждого сайта для наилучших результатов.
именно robots.txt все пишут почему-то по разному их типа правильный вариант))
Нет правильного или неправильного файла robots.txt, могут быть директивы прописаны некорректно и только.
Все зависит от ваших целей, только вы знаете, что надо закрывать, а что не надо.
Так что могут быть только советы или рекомендации, но понятий "правильно" или "не правильно" не существует.
Если вы не сильно шарите в программировании, то можете просто действовать следующим образом.
Выбираете сайты хороших сеошных блогеров и изучаете их роботс, в строке введите путь, как пример http://alaev.inf/robots.txt и изучайте. Это будет наглядный пример для вас, что вообще есть и как правильно это оформлено.
Важно! Ваш роботс должен быть индивидуальным для вашего сайта. Все подсмотреенные примеры вы можете проверить на яндекс вебмастере, загрузите в него роботс, а потом вводите в поле добавить url адресс страницы сайта, которую бы вы хотели проверить на доступность или недоступность роботу, если зелёниньким горит, то робот может индексировать эту страницу, если красным, то нет.
Так путём перебора вы составите прекрасный роботс без особых знаний.
Уделите этому файлу должное время, если вы допустите ошибку в нём, то можете отгрести немалых проблем от поисковых систем!!! Следите, чтобы не было дублей страниц!
Прекрасный пост! спасибо вам большое!
Спасибо за очень интересный и нужный пост.
Я недавно на одной странице спрятал часть текста под яваскрипт. То есть текст сразу был не виден, но при нажатии на кнопочку "Подробнее" он раскрывался. Так вот этот спрятанный текст успешно был проиндексирован не только Гуглом, но и Яндексом.
Поэтому наши любимые поисковики уже спокойно научились индексировать яваскрипты)
Так мне кажется ты совсем не то сделал, что думаешь. Одно дело когда текст на странице не видно потому что он скрыт в css? а яваскрипт только меняет стиль display:none на display:block, и совсем другое дело, когда текст подгружается при клике из другого файла. Так что ты еще раз проверь.
Вот как то так...
а фиг его знает)) Может и не так)) Но если отключаю яваскрипты, то текст не открывается)
Разумеется он не будет открываться, JS не сможет изменить видимость ;)
В первую очередь проверь исходный код страницы, есть ли там тот самый текст. Я почему-то уверен, что он есть!
Любопытно, но я пока не встречал сайтов, у которых индексируются страницы закрытые в robots. Замечал, что Google склонен находить глубока запрятанные страницы, на которые и ссылку-то поди найди, но думал, что robots помогает 100%. Можно пример такой страницы посмотреть?
Ну-ну =)
Далеко ходить не надо, возьмем твой сайт и увидим там кое что: http://s1.ipicture.ru/uploads/20120201/1Jw3U0Wo.png
Автор данного ресурса – талантливейший человек. И хотя основное время он тратит не на любимое занятие, но уверен, что работам его могли бы позавидовать многие профи. Огромный респект таким людям!
Привет всем подскажите как составить robots.txt или где найти рекомендации по его настройке.
Читать надо внимательнее. Я вообще-то в посте даже давал ссылку на мануал Гугла и Яндекса по robots.txt
Я тоже намаялся с индексацией блога Гуглом. Куча дублей, robots просто игнорирует. Перешёл на плагин Wordpress Platinum SEO Pack и за счёт удобства добавления тегов намного улучшил состояние блога. Также теги noarchive и nosnippet тоже добавили плюся в индексации. В Yahoo блог лучше стал индексироваться. А конкретный результат начало приносить только добавление тегов noindex и nofollow в файла темы ...(php). Например, добавив в файл wp-includes/comment-template.php тег rel='nofollow' в нужное место, напрочь отбиваешь у Гугла желание индексировать и помещать в дополнительный индекс ссылки с окончаниями древовидных комментариев на Wordpress. Конечно, вариантов спрятать что-то именно от Гугла много, но на практике большинство из них малорезультативны, так как он может найти запрещённую вами ссылку на стороннем ресурсе и опять же добавить её в индекс. Ладно если в основной, а если нет?
Всегда добавлял индивидуально к ссылкам noindex и nofollow и никаких дублей нету.
Здравствуйте!
А как запретить дубль index.php. В гугл вебмастере пишет вы закрыли важную страницу!
Пропишите в своем .htaccess в корне следующие строки после RewriteEngine On
И не закрывайте в robots.txt доступ к index.php. После этого дубль сам пропадет навсегда.
Ребят такой вопрос, у кого-нибудь был опыт по вывода сайта из под АГС за дубли контента? Хотелось бы узнать через какое время сайт возвращается в индекс после исправления ошибок?
Заранее благодарен за ответ!
Надо писать в службу поддержки, не иначе ;) Объяснить проблему и что было сделано для ее решения. Обязательно ответят.
У меня был опыт вывода нескольких сайтов из бана, решил именно письмом в поддержку.
А каким образом с помощью noindex можно запретить индексирование служебных страниц в DLE? К примеру, страницы профилей, страницы навигации и т.д. На запреты в robots.txt Google не реагирует.
Об этом я напишу в 3-й части руководства по оптимизации DLE.
Жду с нетерпением!
Про закрытие дублей через robots.txt и закрытий внешних ссылок — это отличные советы.
Но я вот столкнулся на WordPress с проблемой. Если делать стартовую страницу статичной, то реальная страница блога с последними записями по тэгу title полностью дублирует стартовую страницу. Это тоже очень плохо, хотя сам контент вроде как не дублируется. В итоге я решил открыть категории по robots.txt и закрыть страницу с последними постами. Фиг знает отработало или нет. Я это дело записал и на блоге выложил http://runetbiz.com/promo/kak-pravilno-nastroit-robotstxt-dlya-bloga-wordpress.htm В теории идея просто отличная, на практике тяжело сказать. Страницы категорий в индексе, но проблема в том. что я таки пару категорий закрывал и недавно нашел закрытую категорию в индексе. Белиберда. Яндекс не слушается или я robots.txt неправильно написал. Может кто советом помочь?
У меня так же, главная страница сайта — статичная, а записи блога выводятся на другой странице. Никакого дублирования нет, просто надо правильно настроить сам движок и плагин All In One Seo.
А ваш robots.txt (судя по написанному в вашем посте) просто ужасен — куча лишней лабуды, которую можно и не прописывать и при этом поведение роботов не изменится.
Я считаю так — качество сайта можно легко оценить по robots.txt, чем меньше там всего написано, тем лучше. Следуя выводам моего поста — метатег noindex предпочтительнее, вот этим тегом и надо закрывать страницы от индексации.