Польский специалист Max Cyrec провел трехмесячный SEO-эксперимент, анализируя работу разных видов внутренних ссылок. Мы перевели его статью об эксперименте, выводах, чтобы вы могли использовать эти лайфхаки на ваших сайтах.
Из статьи вы узнаете:
3 месяца экспериментов. В какие игры я играл с Googlebot
На интернет-форумах и в тематических группах Facebook часто разгораются дискуссии о том, как работает Googlebot — что он может и не может видеть, по каким ссылкам переходит и как это влияет на SEO.
В статье я расскажу вам о результатах трехмесячного эксперимента.
Почти каждый день Googlebot заходил ко мне как друг на пиво.
Иногда он был один:
[02/09/2018 18:29:49]: 66.249.76.136 /page1.html Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) [02/09/2018 19:45:23]: 66.249.76.136 /page5.html Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) [02/09/2018 21:01:10]: 66.249.76.140 /page3.html Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) [02/09/2018 21:01:11]: 66.249.64.72 /page2.html Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) [02/09/2018 23:32:45]: 66.249.64.72 /page6.html Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)Иногда он приводил с собой друзей:
[16/09/2018 19:16:56]: 64.233.172.231 /page1.html Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google Search Console) Chrome/41.0.2272.118 Safari/537.36 [16/09/2018 19:26:08]: 66.249.69.235 /image.jpg Googlebot-Image/1.0 [27/08/2018 23:37:54]: 66.249.76.156 /page2.html Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)И мы развлекались, играя в разные игры:
Поймай меня если сможешь: Я наблюдал, как Googlebot нравится переходить по редиректам 301, просматривать картинки и убегать от канонических ссылок.
Прятки: Googlebot прятался в скрытом контенте — который по словам его родителей, он не одобряет и которого избегает.
Игра на выживание: Я подготовил ловушки и ждал, пока он в них попадет.
Бег с препятствиями: Я поставил препятствия с разными уровнями сложности, чтобы посмотреть, как мой маленький друг справится с ними.
Как вы можете догадаться, Googlebot меня не разочаровал. Мы отлично повеселились и стали хорошими друзьями.
Перейдем ближе к делу.
Я создал сайт для туристического агентства, которое предлагает межзвездные полеты к неизведанным планетам в нашей галактике и вне ее.
У контента было много достоинств, но на самом деле текст был кучей бреда.
Структура экспериментального сайта выглядела так:
Я предоставил уникальный контент и удостоверился, что каждый анкор/заголовок/alt тег, как и другие коэффициенты, были глобально уникальными.
В описании я использовал слова anchor1, или якорь1 и т.д. Пока вы читаете статью, откройте изображение со структурой сайта в отдельном окне — так вам будет удобнее.
Часть 1: Правило первой ссылки
Я хотел проверить правило о том, что из нескольких ссылок на одну и ту же страницу Google учитывает только первую. Я хотел узнать, можно ли не следовать этому правило, и как оно влияет на оптимизацию.
Согласно правилу, если у вас две ссылки на одну и ту же подстраницу на одной странице, вторая будет игнорироваться. Googlebot будет игнорировать анкор во второй и каждой следующей ссылке, тем временем, определяя позицию страницы для поисковой системы.
Это проблема, которую часто упускают. Она часто присутствует в интернет-магазинах, где навигационное меню сильно искажает структуру сайта.
В большинстве магазинов есть статичное выпадающее меню, которое выдает, к примеру, 4 ссылки на основные категории и 25 скрытых ссылок на подкатегории.
Во время разметки структуры сайта Googlebot видит все ссылки на каждой странице с меню. Это приводит к тому, что все страницы одинаково важны, и их вес распределяется равномерно. Это выглядит приблизительно так:
Самая распространенная, но неправильная, на мой взгляд, структура
Пример на картинке нельзя назвать правильной структурой, потому что все категории ссылаются друг на друга со всех страниц, где есть меню. Поэтому
у домашней страницы, всех категорий и подкатегорий равное количество входящих ссылок, и вес всего сайта распределяется между ними равномерно. Таким образом, вес домашней страницы делится на 24 категории и подкатегории. Поэтому каждая из них получает только 4% веса домашней страницы.
Как должна выглядеть структура:
Если вам нужно быстро протестировать структуру страницы и просмотреть ее, как Google, используйте сервис Screaming Frog.
В этом примере вес домашней страницы делится на 4, и каждая категория получает 25% от ее веса. Потом категории распределяют вес между подкатегориями. Так внутренняя перелинковка тоже становится лучше.
Например, если вы пишете статью на блоге интернет-магазина и хотите ее перелинковать с одной из подкатегорий, Googlebot заметит ссылку, просматривая сайт. В первом примере он так делать не будет из-за правила первой ссылки. Если ссылка на подкатегорию была в меню сайта, ссылка в статье будет игнорироваться.
Я начал этот SEO-эксперимент, сделав следующее:
- Сначала на странице page1.html я добавил ссылку на подстраницу page2.html как классическую ссылку dofollow с анкором anchor1.
- Затем в тексте на этой же странице я добавил слегка измененную ссылку, чтобы проверить, будет ли Googlebot просматривать их.
Я протестировал такие решения:
- На домашней странице сервиса я назначил одну внешнюю ссылку dofollow фразе с URL в анкоре, и это ускорило индексирование.
- Я подождал, пока страница page2.html начала ранжироваться по фразе из первой ссылки dofollow (anchor1), идущей со страницы page1.html. Эта ненастоящая фраза или любая другая, которую я протестировал, не была найдена на целевой странице. Я предположил, что если другие ссылки сработают, тогда page2.html также проранжируется в результатах поиска по другим фразам из других ссылок. Это заняло около 45 дней. И затем у меня получилось сделать первый важный вывод.
Сайт, где ключевое слово не находится ни в контенте, ни в метатеге title, но привязано к запрашиваемому анкору, может ранжироваться в результатах поиска выше, чем сайт, который содержит это слово, но не ссылается на него.
Более того, домашняя страница page1.html, которая содержала запрашиваемую фразу, была самой сильной страницей в веб-сервисе. На нее ссылалось 78% подстраниц. Но она ранжировалась ниже по запрашиваемой фразе, чем подстраница page2.html, на которую ссылается искомая фраза.
Ниже 4 вида ссылок, которые я протестировал. Все из них идут после первой ссылки dofollow, ведущей к странице page2.html.
Ссылка на сайт с якорем
Первая из дополнительных ссылок в коде ссылки dofollow была ссылкой с якорем, или хештегом. Я хотел увидеть, просмотрит ли Googlebot ссылку и проиндексирует ли страницу page2.html под фразой anchor2. И это несмотря на то, что ссылка ведет к странице page2.html, но ссылка, которая меняется на page2.html#testhash, использует anchor2.
К сожалению, Googlebot не запомнил эту связь и не передал вес подстранице page2.html по этой фразе. В итоге в результатах поиска по фразе anchor2 была только одна подстраница page1.html, где слово могло было обнаружить в якоре ссылки.
Ссылка на сайт с параметром
page2.html?parameter=1
В начале Googlebot был заинтересован в части ссылки после знака запроса и анкоре внутри ссылки anchor3.
Googlebot был заинтригован и попытался вычислить, что имелось в виду. Чтобы избежать индексирования дублирующегося контента под другими ссылками, каноническая страница page2.html ссылалась на себя. Логи зарегистрировали 8 просмотров по этому адресу, но выводы отсюда довольно печальные:
- Через 2 недели Googlebot стал туда заходить гораздо реже. В конце концов он ушел и больше не вернулся.
- Ни страница page2.html, ни параметр с параметром ссылки parameter1 не индексировались по фразе anchor3. Согласно Search Console, эта ссылка не существует — не учитывается среди входящих ссылок. Но в то же время, фраза anchor3 считается якорной фразой.
Ссылка на сайт от редиректа
Я хотел заставить Googlebot тщательнее просмотреть мой сайт. В итоге каждые несколько дней Googlebot заходил по ссылке dofollow с анкором anchor4 на странице page1.html, ведущей на страницу page3.html. Страница page3.html редиректила с кодом 301 на страницу page2.html. К сожалению, в случае страницы с параметром, через полтора месяца страница page2.html еще не ранжировалась по фразе anchor4, которая появилась в ссылке редиректа на странице page1.html.
Однако в Google Search Console, в разделе Anchor Texts anchor4 виден и индексируется. Это может значить, что через какое-то время редирект стал работать как положено. Поэтому страница page2.html будет ранжироваться в результатах поиска по anchor4, несмотря на то, что это вторая ссылка на ту же целевую страницу на сайте.
Ссылка на страницу с помощью тега canonical
На странице page1.html я разместил отсылку к странице page5.html сcылкой follow с помощью анкора anchor5. В то же самое время на странице page5.html был уникальный контент. В нем был тег canonical на страницу page2.html.
< link rel=“canonical” href=”https://example.com/page2.html” />
Результаты теста:
- Страница page5.html проиндексировалась несмотря на тег canonical.
- Страница page5.html не проранжировалась в результатах поиска по anchor5.
- Страница page5.html проранжировалась по фразам, используемым в тексте страницы. Это значит, что Googlebot полностью проигнорировал теги canonical.
Похоже на то, что не получится использовать rel=canonical, чтобы избежать индексирования какого-то контента.
Часть 2. Краулинговый бюджет
Краулинговый бюджет — это некоторый объем страниц, который поисковый робот Google может просканировать за один раз.
Когда я продумывал свою SEO-стратегию, я хотел заставить Googlebot танцевать под мою дудку. Я проверял SEO-процессы на уровне серверных логов, что мне очень помогло. Благодаря этом я знал о малейших телодвижениях бота, и как он реагировал на изменения — реструктуризацию сайта, полную переделку внутренней перелинковки, отображение информации.
Одной из задач на протяжении SEO-кампании было перестроить сайт так, чтобы Googlebot посещал только те ссылки, которые он может проиндексировать и которые мы бы хотели видеть проиндексированными. То есть, в индексе Google должны быть только те страницы, которые важны нам с точки зрения SEO. С другой стороны, Googlebot должен просматривать только те сайты, которые мы хотим проиндексировать. Это очевидно не всем, например, когда интернет-магазин внедряет фильтрацию по цветам, размеру и ценам с помощью манипуляций с параметрами ссылки:
example.com/women/shoes/?color=red&size=40&price=200-250
Может оказаться, что решение, которое позволяет Googlebot просматривать динамические ссылки, заставляет его посвящать время их тщательной проверке и индексации, вместо обычного просмотра.
example.com/women/shoes/
Такие динамические ссылки не только бесполезны, но и потенциально вредны для SEO. Это потому, что их можно ошибочно воспринять как малополезный контент. Это может привести к тому, что позиции сайта упадут.
Во время эксперимента я также хотел проверить методы структуризации контента без использования rel=”nofollow”. Для этого я блокировал Googlebot в файле robots.txt или размещал часть HTML-кода в фреймах, которые невидимы для бота.
Я протестировал 3 вида JavaScript ссылок.
Ссылка JavaScript с событием по клику
Простая ссылка, созданная на JavaScript:
< a href=”javascript:void(0)” onclick=”window.location.href =’page4.html’” >anchor6< /a >
Googlebot легко перешел к странице page4.html и проиндексировал целую страницу. Подстраница не ранжируется в результатах поиска по фразе anchor6, и ее нельзя найти в разделе Anchor Texts в Google Search Console. Вывод: ссылка не передала вес.
Итоги:
- Классическая ссылка JavaScript позволяет Google просматривать сайт и индексировать страницы, на которые он приходит.
- Ссылка не передает вес — она нейтральна.
Ссылка Javascript с внутренней функцией
Я решил поднять ставки, но к моему удивлению Googlebot преодолел препятствие меньше, чем за 2 часа после публикации ссылки.
< a href=”javascript:void(0)” class=”js-link” data-url=”page9.html” >anchor7< /a >
Чтобы управлять этой ссылкой, я использовал внешнюю функцию. Эта функция должна была считывать ссылку из данных и редиректа — только из редиректа пользователя на целевую страницу page9.html, как я надеялся. Как и в предыдущих случаях, страница page9.html полностью проиндексировалась.
Интересно то, что несмотря на недостаток входящих ссылок страница page9.html была третьей по популярности у Googlebot после страниц page1.html и page2.html.
Я использовал этот метод раньше для структуризации веб-сервисов. Однако как мы видим, он больше не работает. В SEO ничто не работает вечно.
Ссылка JavaScript с кодировкой
Но я не сдавался и решил, что смогу одержать верх над Googlebot. Поэтому я построил простую функцию, кодируя данные алгоритмом base64, и отсылка выглядела так:
< a href=”javascript:void(0)” class=”js-link” data-url=”cGFnZTEwLmh0bWw=” >anchor8< /a >
В итоге Googlebot не смог сгенерировать код JavaScript, который бы раскодировал контент атрибута ссылки и редиректа. И вот оно! У нас есть способ структурировать веб-сервис, не используя rel=nonfollow, чтобы боты не просматривали все, что им захочется. Куда бы мы ни ставили функцию — на ту же страницу в разделе head или размещали ее во внешнем JS-файле, мы не нашли следов Googlebot в логах сервера или Search Console.
Часть 3. Скрытый контент
В последнем тесте я решил проверить, проиндексировал ли бот скрытый контент, или Google отобразил такую страницу без скрытого текста, как утверждают некоторые специалисты.
Я хотел подтвердить или опровергнуть эту гипотезу. Чтобы сделать это, я разместил текст на более, чем 2000 знаков на странице page12.html, спрятал около 20% текста в CSS и добавил кнопку «Показать больше». Внутри скрытого текста была ссылка на страницу page13.html с анкором anchor9.
Нет сомнений, что бот может отобразить страницу. Мы можем видеть это в Google Search Console и Google Insight Speed. Тем не менее, мой эксперимент показал, что скрытый блок текста был полностью проиндексирован. Фразы, спрятанные в тексте, проранжировались в результатах поиска, а Googlebot перешел по ссылкам, спрятанным в тексте. Более того, анкоры ссылок из скрытого блока текста были видны в Google Search Console в секции текста анкора. Страница page13.html также начала ранжироваться в результатах поиска по ключевому слову anchor9.
Это очень важно для интернет-магазинов, где контент часто находится в скрытых вкладках. Теперь мы уверены, что Googlebot видит контент в скрытых вкладках, индексирует его и передает вес ссылок, спрятанных в нем.
Выводы эксперимента
- Самый важный вывод, который я сделал из этого эксперимента, — нет прямого способа обойти правило первой ссылки, используя измененные ссылки — ссылки с параметром, редиректы 301, канонические и якорные ссылки.
- Важно построить структуру сайта, используя ссылки Javascript. Благодаря этому уходят ограничения правила первой ссылки.
- Googlebot может видеть и индексировать контент, спрятанный во вкладках, и переходить в нем по ссылкам.
Источник: статья в издании Search Engine Land