Введение


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

Мой опыт основывается на продвижении сайта для экспатов и путешественников со всего мира, контентные страницы которого формируются из базы данных. Сайт с миллионами страниц генерированного из базы данных контента.

Многоязычность и формирование URL


В моем примере сайт необходимо было перевести на 15 основных языков, соответственно, необходимо было выбрать схему построения URL для каждого языка.

Есть четыре варианта как это можно сделать:

1- Каждый язык на отдельном субдомене
Пример: de.example.com, ru.example.com

Преимущества — не выявлены.
Недостатки — неудобство администрирования.

2- Каждый язык на отдельном домене (Пример: example.de, example.ru)

Преимущества — более высокий CTR с поиска за счет «родной» пользователю доменной зоны (Пример: Немец скорее кликнет в выдаче на домен в зоне .de, чем на .com).
Недостатки — трудность работы с внешними ссылками, крайне неудобное администрирование.

3- Для каждого языка свои параметры в URL (Пример: example.com?leng=de, example.com?leng=ru)

Преимущества — не выявлены.
Недостатки — URL с параметрами хуже индексируются и участвуют в поиске.

4- Каждый язык в отдельном подкаталоге (Пример example.com/de/, example.com/ru/)

Преимущества — не выявлены.
Недостатки — не выявлены.

Даже несмотря на то что второй вариант, в отличие от остальных, имеет преимущество, мной был выбран четвертый в силу простоты реализации и отсутствия недостатков.

Атрибут hreflang — показываем Google на каком языке показывать страницу в выдаче


В работе над сайтом я столкнулся с проблемой. Google и Яндекс сейчас используют атрибут hreflang для определения языка и страны для которой показывать данную версию страницы.

Пример:

<link rel="alternate" href="http://example.com/ru-au" hreflang="ru-au" />

пользователям, запрашивающим на русском языке из Австралии будет показываться версия example.com/ru-au

<link rel="alternate" href="http://example.com/ru-gb" hreflang="ru-gb" />

пользователям, запрашивающим на русском языке из Великобритании будет показываться версия example.com/ru-gb

<link rel="alternate" href="http://example.com/de-au" hreflang="de-au" />

пользователям, запрашивающим на немецком языке из Великобритании будет показываться версия example.com/de-au

<link rel="alternate" href="http://example.com/de-gb" hreflang="de-gb" />

пользователям, запрашивающим на немецком языке из Великобритании будет показываться версия example.com/de-gb

Проблема моего сайта заключалась в том, что любая языковая версия страницы может быть запрошена из любой географической точки. Например, русскоговорящий человек может запросить страницу из России, Австралии, Германии и любой другой точки мира.

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

Решение заключается в установке параметров атрибута hreflang без указания географии, то есть мы показываем Google только языковые версии страницы, без привязки к региону.

Пример:

<link rel="alternate" href="http://example.com/ru/" hreflang="ru" />

пользователям, запрашивающим на русском языке из любой точки мира будет показываться версия example.com/ru

<link rel="alternate" href="http://example.com/de/" hreflang="de" />

пользователям, запрашивающим на немецком языке из любой точки мира будет показываться версия example.com/de

GeoShape — микроразметка географического положения объектов


Как оказалось, hreflang лишь частично решил проблему. Так как сайт формирует страницы из базы данных (а ее содержимое не переводится на разные языки) получилась ситуация что я имею миллионы страниц дублей по основному контенту, отличающихся лишь названием запрашиваемой страны в заголовке, а остальной контент часто абсолютно идентичен, либо незначительно отличался. Как пример, аналоги русских лекарств во Франции, Италии и вообще по Евросоюзу будут практически одни и те же. Получается что разные для пользователей страницы Италии и Франции, будут дублями в глазах Google.

Теперь задача состояла в том, чтобы показать Google что страницы с одинаковым или похожим контентом предназначены для разных стран. Как мы помним, hreflang использовать для этой задачи нельзя, так как это будут либо сотни строк атрибутов, либо станицы с различными языками будут доступны не из всех стран.

На помощь мне пришла микроразметка. Столкнувшись с проблемой, я стал анализировать сайты, подобные моему, и на booking.com наткнулся на тег структурированных данных GeoShape. Они используют его для обозначения местоположения отелей.

Проверив валидность кода при применении GeoShape в разметке лекарств (сайт речь о котором в статье про аналоги лекарств) я установил все на сайт.

<div class="items-preparation full_match" itemprop="relatedDrug" itemscope itemtype = "http://schema.org/Drug">
        <span itemprop="subjectOf" itemscope itemtype="http://schema.org/GeoShape">
             <meta itemprop="addressCountry" content="AU">
        </span>...

Теперь Google видит разницу в географии между страницами, предназначенными для разных стран, но с похожим контентом, а пользователи могут получить свою языковую версию страницы из любой точки планеты.

Sitemap.xml — Улучшаем индексацию


Здесь все довольно просто, но также есть нюансы.

Простое

Размечаем все URL сайта с языковыми версиями в sitemap.xml с помощью атрибута hreflang в соответствии с рекомендациями гугла.


<url>
    <loc>http://www.example.com/english/</loc>
    <xhtml:link   
                 rel="alternate"
                 hreflang="de"
                 href="http://www.example.com/deutsch/"
                 />
    <xhtml:link 
                 rel="alternate"
                 hreflang="de-ch"
                 href="http://www.example.com/schweiz-deutsch/"
                 />
    <xhtml:link    
                 rel="alternate"
                 hreflang="en"
                 href="http://www.example.com/english/"
                 />
  </url>

Получится что hreflang дублируется и в страницы и в sitemap.xml.

Нюансы

  • При переводе на много языков, прямо пропорционально растет и количество страниц, поэтому стоит помнить что максимальное количество ссылок в одном файле sitemap.xml — 50 000, а сам файл должен весить не больше 10 МБ.
  • При наличии большого количества страниц рекомендуется разбить файлы sitemap по языкам и структуре сайта.

Ссылки:

Комментарии (16)


  1. PashaNedved
    26.03.2018 22:18

    hreflang=«ru-gb»

    Вы это серьезно?
    Атрибут hreflang указывает на язык (в формате ISO 639-1) и, при необходимости, регион (в формате ISO 3166-1 Alpha 2) альтернативного URL.

    Ключевое слово — при необходимости. Например, для Канады: en-ca, fr-ca, en-us. Когда появляется необходимость перевода на русский язык указывают ru, а не ru-ca.


    1. RotgarSett Автор
      26.03.2018 22:24

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


      1. PashaNedved
        26.03.2018 22:44

        Вы серьезно считаете, что существует британский вариант русского языка?


        1. RotgarSett Автор
          26.03.2018 22:55

          Конечно я так не считаю.

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

          Также, как в справке Search Console Google
          de-ES – содержание на немецком языке для пользователей из Испании
          Это не значит что есть испанская версия немецкого языка. Это значит что страница предназначена для пользователей разговаривающих на немецком, которые в данный момент в Испании.


          1. PashaNedved
            27.03.2018 03:55

            На мой предыдущий комментарий не обращайте внимания. Не знаю, чем я думал, когда его писал. Наверно, тем же что и вы, приводя в пример ru-au, ru-gb.


            1. RotgarSett Автор
              27.03.2018 04:21

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


  1. nikolau
    27.03.2018 19:15

    А что скажете про самую главную страницу (http://example.com/) — на каком языке она должна быть? Она же для СЕО является самой главной. Или на ней обязательный редирект ставить (по какому-то методу определения языка пользователя)? Есть ли разница со слешем на конце или без (http://example.com/ru/ и example.com/ru)? Hreflang указывается для корневой языковой страницы или для всех?


    1. RotgarSett Автор
      27.03.2018 19:29

      А что скажете про самую главную страницу (http://example.com/) — на каком языке она должна быть?

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

      Она же для СЕО является самой главной.

      -Совсем не всегда это так. На очень многих сайтах больше всего трафика идет именно на внутренние страницы, да и выделять «главные» и «второстепенные» страницы в SEO очень опасное дело, оптимизировать лучше все по максимуму.

      Или на ней обязательный редирект ставить (по какому-то методу определения языка пользователя)?

      -Нет, обязательно ничего ставить не нужно. Но, при желании, можно определять предпочтительный язык пользователя и предлагать ему страницу с его языком. Определять язык можно самыми разными методами, но, на мой взгляд, самый объективный для международных проектов — определение по языку браузера.

      Есть ли разница со слешем на конце или без (http://example.com/ru/ и example.com/ru)

      -Есть, настолько несущественная что справедливо сказать что разницы нет.

      Hreflang указывается для корневой языковой страницы или для всех?

      -Атрибут hreflang может и должен указываться для любой страницы у которой есть больше одной языковой версии. Его действие не распространяется на страницы в подкатологе. Если например на example.com/catalogue/ языковые версии размечены, а на example.com/catalogue/page1 не размечены, то на внутренних страницах для Google действие атрибута установленного в каталоге не учитывается.


      1. nikolau
        27.03.2018 19:56

        Спасибо за развернутый ответ. Тоже выбирал между «Каждый язык на отдельном домене» и «Каждый язык в отдельном подкаталоге», в пользу последнего, но до конца не уверен был.


        1. RotgarSett Автор
          27.03.2018 20:13

          Да, если вы про тот сайт который у вас в профиле, то вопрос действительно актуальный. По мне, подкаталоги самое верное решение, если нет никаких нюансов работы сайта или аудитории.


    1. Killer
      28.03.2018 12:18

      1. главная должна быть на основном языке, при этом у нее надо указать через hreflang, что есть языковые копии example.com/ru/ и тп
      2. редиректы ставить нельзя, гугл сам разберется, а пользователю надо дать выбор языка на данной странице
      3. страница со слешем и без — это две разные страницы для гугля, поэтому, старайтесь или везде делать со слешем или без, но ни как не смешивая


      1. nikolau
        28.03.2018 14:27

        По п.2. почему? Вот если брать, как пример, тот же booking.com, там идет постоянный редирект. Также, как мне кажется, если пользователи будут заходить на сайт и попадать на страницы с незнакомым языком — есть большая вероятность, что они просто закроют страницу и не будут разбираться.


        1. Killer
          28.03.2018 15:20

          если вы хотите помочь пользователю, то отдавайте страницу на том языке, который установлен в его браузере, но ни в коем случае не делайте редиректы, если для вас важно СЕО

          посмотрите на сайт, указанный в моем профиле, гугл страницу видит на англ, а вы увидите ее на русском, но, если захотите, то сможете сменить язык на любой другой

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


  1. technik
    27.03.2018 20:12

    Очень интересно как вы решили проблему со скоростью индексации сайта. Насколько я понимаю на сайте миллионы страниц, как заставили гуглбота кушать так много, особенно если контент сильно дублируется?

    И ещё очень по бэклинкам интересно, не воспринимает ли Google ссылки со всего мира на разных языках как спам?


    1. RotgarSett Автор
      27.03.2018 20:25

      Очень интересно как вы решили проблему со скоростью индексации сайта. Насколько я понимаю на сайте миллионы страниц, как заставили гуглбота кушать так много, особенно если контент сильно дублируется?

      -Правильные sitemap.xml, быстрая скорость загрузки страниц, AMP версии, заголовки last-modified, внутренняя перелинковка, правильная структура сайта, микроразметка которая показывает Google различия страниц и еще многие мелочи. Хорошая тема для отдельной статьи.

      Можно значительно ускорить процесс индексации если покупать хорошие ссылки.

      На данный момент (за 8 месяцев жизни проекта, с учетом демо-версии) Google просканировал больше 20 млн страниц, в индекс отправил 4,6 млн. Внешние ссылки не покупались.


      И ещё очень по бэклинкам интересно, не воспринимает ли Google ссылки со всего мира на разных языках как спам?

      -Проекту меньше года, пока как спам не воспринимает. Я на 100% уверен в том что Google достаточно умен чтобы понять что на многоязычный проект могут идти ссылки со всего мира. Пока появляются естественные ссылки с комментариев к статьям в блогах и с форумов.


    1. Killer
      28.03.2018 12:21

      нет, тем более, что они скорее всего будут идти на соответствующую языковую версию, кроме того, если вы хотите хорошо ранжироваться в какой-то стране, то вам нужны ссылки с доменов в этой стране