Ошибки hreflang на многоязычных сайтах|7 технических причин недействительности тегов

本文作者:Don jiang

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

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

Ошибки hreflang на мультиязычных сайтах

Table of Contens

Ошибки в формате языкового или регионального кода

Например, использование заглавных букв (например, EN-US) или опечатки (например, написание zh-CN как zh-CH) могут помешать поисковым системам правильно распознать целевой регион страницы или даже привести к игнорированию метки как недействительной.

Даже если код кажется правильным (например, использование es-ES вместо es), избыточная информация может усложнить логику сопоставления.

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

Правила кодов по стандарту ISO

  • Код языка: необходимо использовать строчные буквы в соответствии со стандартом ISO 639-1 (например, en, es, zh), только двухбуквенные сокращения.
  • Код региона: необязателен, используется в соответствии со стандартом ISO 3166-1 заглавными буквами (например, US, GB, CN), указываются только коды стран или регионов.
  • Комбинированный формат: язык и регион разделяются дефисом, например, en-US (американский английский), zh-CN (упрощённый китайский).

Исключения:

  • При указании только языкового кода (например, fr) страница предназначена для всех пользователей, говорящих на этом языке, без ограничения по региону.
  • Для традиционного китайского следует использовать zh-Hant (традиционный китайский) или zh-Hant-TW (традиционный китайский для Тайваня), а не zh-TW, чтобы избежать неправильного восприятия как упрощённого китайского в Тайване.

Типичные ошибки и их последствия

Ошибка 1: путаница с регистрами букв

  • Примеры ошибок: EN-us (код языка заглавными, код региона строчными), Zh-cn (первая буква языка заглавная).
  • Последствия: поисковые системы могут полностью игнорировать такой тег, страница не будет соответствовать целевой аудитории.

Ошибка 2: опечатки или вымышленные коды

  • Примеры ошибок: pt-BZ (правильный код Бразилии — BR), eu (баскский язык как eu, но некоторые поисковые системы могут не поддерживать редкие языки).
  • Последствия: редкие языки или некорректные коды могут помешать правильной индексации и привести к потере трафика на страницы по умолчанию.

Ошибка 3: избыточные или некорректные комбинации

  • Примеры ошибок: es-ES (испанский + Испания, обычно достаточно es), en-US-UK (некорректное объединение нескольких регионов).
  • Последствия: избыточные коды могут сбить поисковики с толку, предпочтение отдается более простым страницам-конкурентам.

Рекомендуемые инструменты и способы проверки

  • Google Hreflang Testing Tool: Введите URL для проверки корректности разметки (необходимо использовать вместе с Search Console).
  • Screaming Frog: Сканирование сайта, фильтрация hreflang-тегов и массовый экспорт ошибок (поддерживается в платной версии).
  • Hreflang Validator (сторонний инструмент): Бесплатная онлайн-проверка с подсветкой ошибок в формате и конфликтующих ссылок.

Практические шаги для исправления

Проверьте текущие коды: Для сайтов на WordPress можно использовать плагины (например, Yoast SEO) или напрямую просмотреть исходный код страницы, чтобы найти тег <link rel="alternate" hreflang="..." />.

Массовая замена неправильных кодов

  1. Если вы используете многоязычный плагин (например, WPML), напрямую измените формат “языкового кода” в настройках языка.
  2. При ручном редактировании убедитесь, что формат на всех страницах一致ен (например, глобально заменить EN на en).

Добавление регионального кода (по желанию)

  • Добавляйте только в случае необходимости регионального разделения (например, en-GB для пользователей из Великобритании), в остальных случаях используйте только языковой код (например, fr).

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

Неиспользование полного абсолютного URL

Многие владельцы сайтов ошибочно считают, что относительные пути (например, /de/page) или опущение протокола (например, example.com/de) упрощают настройку, но это может привести к серьёзным проблемам.

Например, если страница доступна по протоколам http и https, отсутствие протокола может привести к тому, что поисковые системы воспримут их как разные страницы, что приведет к распылению ссылочного веса.

Кроме того, если сайт использует субдомены или вложенные каталоги, отсутствие единообразного использования абсолютных URL может вызвать путаницу в определении пути и сделать теги hreflang неэффективными (например, смешивание URL для мобильной и настольной версий сайта).

Определение и необходимость абсолютного URL

Абсолютный URL должен включать протокол (http:// или https://), полное доменное имя и путь (например, https://www.example.com/de/page).

Почему это важно

  1. Поисковым системам нужно четко различать страницы. Относительный путь (например, /de/page) может быть воспринят как любая версия сайта (http или https), что приведет к дублированию контента.
  2. При использовании субдоменов или вложенных директорий отсутствие абсолютного URL может привести к неправильному определению принадлежности страниц (например, de.example.com/page и www.example.com/de/page могут восприниматься как разные страницы).

Типичные проблемные случаи

  • Страницы доступны как по HTTP, так и по HTTPS, но в hreflang отсутствует указание протокола, что приводит к распылению ссылочного веса.
  • Контент общий для мобильной и десктопной версии, но структура URL различается (например, m.example.com/de и example.com/de), при этом нет абсолютных URL для их связи.

Распространенные ошибки и их последствия

Ошибка 1: Относительный путь или отсутствие протокола

Неверные примеры

  1. <link hreflang="de" href="/de/page" /> (относительный путь)
  2. <link hreflang="es" href="www.example.com/es/page" /> (без https://)

Последствия

  • Поисковики могут воспринять /de/page как http://example.com/de/page, хотя реальная страница доступна только по HTTPS, в результате чего тег hreflang не сработает.
  • Версии HTTP и HTTPS будут восприниматься как разные страницы, что приведет к дублированию контента и распылению ссылочного веса.

Ошибка 2: Несогласованность субдоменов

  • Неверный пример: основной сайт использует https://example.com/fr/page, а французская подстраница — другой URL.
  • https://fr.example.com/page не указывает на абсолютные URL-адреса в связанных hreflang.
  • Последствия: Поисковые системы не могут связать поддомен с основными страницами сайта, что может привести к перенаправлению франкоязычных пользователей на страницу по умолчанию.
  • Ошибка 3: Нестандартизированные динамические параметры

    • Пример ошибки: <link hreflang="ja" href="https://example.com/page?lang=ja" /> (с параметрами отслеживания)
    • Последствия: Поисковые системы могут считать такие страницы разными (например, ?lang=ja и ?lang=ja&utm=ads), что приведет к неполному охвату hreflang.

    Методы проверки с помощью инструментов

    • Google Search Console:
      Проверьте в отчете по охвату наличие ошибок “дублированные страницы” или “отсутствие hreflang”, чтобы найти неполные URL.
    • Screaming Frog:
      После сканирования сайта отфильтруйте теги hreflang и проверьте, являются ли все атрибуты href абсолютными URL (фильтр: //example.com или /path).
    • Sitebulb:
      В отчете по международному SEO-аудиту автоматически указываются “неполные hreflang URL” с рекомендациями по исправлению.

    Решения и практические шаги

    CMS-системы (например, WordPress):

    Настройка плагинов:
    Если вы используете плагины вроде Yoast SEO, включите опцию “Создавать абсолютные URL” в настройках мультиязычности (обычно нужно отключить “относительные пути”).

    Массовая замена в базе данных:
    С помощью SQL-команд или плагинов (например, Better Search Replace) замените href="/ на href="https://www.example.com/.

    Ручная правка кода:
    В HTML или серверной логике убедитесь, что все ссылки hreflang используют полные URL, например:

    <link rel="alternate" hreflang="de" href="<?php echo site_url('/de/page'); ?>" />

    Настройки сервера:

    • Принудительная стандартизация протокола: с помощью .htaccess или конфигурации Nginx автоматически перенаправляйте http на https, чтобы избежать смешанного контента.
    • Канонизация URL: установите 301 редирект между разными вариантами одного пути (например, /de и /de/) для обеспечения единственного абсолютного URL.

    Отсутствие самоссылочной hreflang-метки

    Например, если французская страница содержит ссылки только на английскую и испанскую версии, но не включает hreflang="fr", указывающий на саму себя,

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

    Роль и необходимость самоссылочного тега hreflang

    Самоссылочный тег означает, что страница должна указывать hreflang-ссылку на саму себя (например, французская страница должна включать <link rel="alternate" hreflang="fr" href="ссылка на саму страницу"/>).

    Основные функции:

    • Четко указывает поисковым системам язык и регион страницы, предотвращая ошибки при определении контента.
    • Формирует замкнутую сеть между всеми языковыми версиями, обеспечивая правильное распределение SEO-веса между страницами.

    Последствия отсутствия

    • Поисковые системы могут воспринять страницу как «язык не указан» и автоматически отнести её в основную языковую директорию, что приведёт к потере целевого трафика.
    • В условиях конкуренции между разными языками (например, если страницы на английском и испанском не ссылаются сами на себя), может возникнуть проблема внутреннего дублирования контента.

    Частые ошибки и разбор случаев

    Ошибка 1: Неверное использование hreflang на одностраничном сайте

    • Сценарий: Страница имеет только одну языковую версию, но добавлены hreflang-ссылки на несуществующие версии на других языках.
    • Пример последствий: Страница англоязычного сайта добавляет hreflang="en" на саму себя и ошибочно добавляет hreflang="es" на несуществующую испанскую страницу, что приводит к путанице в поисковых системах.

    Ошибка 2: Ошибки в настройках мультиязычного плагина

    • Пример сценария: При использовании плагина WPML не активирована опция «Автоматически добавлять самоссылки hreflang».
    • Последствия: В результирующих тегах указаны только ссылки на другие языковые версии, отсутствует ссылка на текущую страницу.

    Ошибка 3: Неполная загрузка тегов на динамических страницах

    • Пример сценария: На страницах, рендерящихся через JavaScript (например, React/Vue), теги hreflang не добавляются корректно в секцию <head>.
    • Последствия: Поисковые роботы могут не распознать динамически сгенерированные самоссылки hreflang.

    Инструменты и методы проверки

    Шаг 1: Ручная проверка исходного кода

    • Откройте исходный код страницы с помощью Ctrl+U, найдите hreflang="xx" и проверьте наличие тега, указывающего на текущий URL (где xx — языковой код страницы).

    Шаг 2: Проверка через Google Search Console

    • Вставьте URL страницы в инструмент «Проверка URL», затем откройте отчёт «Международное таргетирование» — если появится сообщение «Отсутствует самоссылка hreflang», значит проблема есть.

    Шаг 3: Использование инструмента Hreflang Validator

    • Введите URL страницы — инструмент покажет все hreflang-ссылки, а отсутствующие самоссылки будут отмечены красным предупреждением.

    Решения и пошаговые инструкции

    Исправление в CMS (на примере WordPress)

    Настройка плагинов

    • Если используете Yoast SEO: включите опцию «Добавлять самоссылки hreflang» в расширенных настройках.
    • Если используете WPML: перейдите в «Настройки языка» → «SEO-параметры» и активируйте «Включить самоссылки».

    Ручное исправление (для статических сайтов или пользовательского кода)

    Добавьте следующий код в секцию <head> (пример для страницы на французском языке):

    <link rel="alternate" hreflang="fr" href="https://www.example.com/fr/page-actuelle" />
    <link rel="alternate" hreflang="x-default" href="https://www.example.com/" />

    Исправление динамически отображаемых страниц (например, React)

    В логике серверного рендеринга (SSR) динамически создаётся тег ссылки на текущий язык страницы:

    const hreflangSelf = `<link rel="alternate" hreflang="${currentLang}" href="${currentURL}"/>`;
    document.head.insertAdjacentHTML('beforeend', hreflangSelf);

    Многоязычные страницы не связаны между собой

    Например, немецкая страница ссылается на английскую версию, но английская страница не ссылается обратно на немецкую.

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

    Принцип замкнутой связи и его важность

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

    • Немецкая страница (de) должна ссылаться на английскую (en), французскую (fr) и другие языковые версии;
    • Английская и французская страницы также должны ссылаться обратно на немецкую.

    Почему это важно:

    • Передача SEO веса: Замкнутые связи помогают поисковым системам понять, что страницы на разных языках являются равнозначными, предотвращая размывание веса.
    • Предотвращение дублирования контента: При односторонних ссылках (например, английская страница ссылается на немецкую, но та не ссылается обратно) поисковые системы могут расценить их как независимые страницы и наложить санкции за дублированный контент.

    Исключения:

    • Страницы на одном языке (например, только на английском) не требуют замкнутой связи, но должна быть ссылка на саму себя.
    • Региональные версии (например, en-US и en-GB) должны ссылаться друг на друга, но не обязаны связываться с другими языками.

    Распространённые случаи разрыва связей и их последствия

    Сценарий 1: Добавлена новая языковая версия без обновления старых страниц

    • Пример: На новостном сайте добавлена японская страница (ja), но на старых английских и китайских страницах отсутствуют hreflang-ссылки на японскую страницу.
    • Последствия: Японская страница становится “изолированной”, поисковые системы индексируют только связанные страницы на других языках.

    Сценарий 2: Ошибка в логике CMS-плагина

    • Пример: Плагин для многоязычности WordPress (например, Polylang) при массовом создании страниц не добавляет новые языковые ссылки в старый контент автоматически.
    • Последствия: Частично нарушаются связи между страницами, пользователи не могут переключиться на новые языковые версии со старого контента.

    Сценарий 3: Динамические параметры нарушают связь

    • Пример: URL испанской страницы содержит параметры (например, ?lang=es), но на других страницах эти параметры в hreflang не указаны.
    • Последствия: Поисковые системы рассматривают такую страницу как несвязанную с другими языковыми версиями.

    Инструменты для проверки и методы диагностики

    Инструмент 1: Screaming Frog

    • После сканирования перейдите на вкладку “Hreflang”, отфильтруйте “Missing Reciprocal Links” (отсутствующие обратные ссылки).
    • Действие: Экспортируйте список ошибок и определите группы URL, не образующие замкнутой связи.

    Инструмент 2: Sitebulb

    • В отчёте “Международный SEO-аудит” проверьте предупреждение “Unreciprocated hreflang links” (недостающие обратные hreflang-ссылки), чтобы сразу увидеть разорванные страницы и отсутствующие языковые версии.

    Инструмент 3: DeepCrawl

    • Настройте собственные правила для мониторинга связей между многоязычными страницами и получайте автоматические отчёты о новых разрывах каждую неделю.

    Решения и практические шаги

    Решение 1: Массовая корректировка через CMS-плагин (например, Shopify)

    В настройках многоязычного плагина (например, Langify) включите опцию “Автоматически связывать все языковые версии”.

    В разделе «Настройки шаблона» убедитесь, что логика тега hreflang включает цикл по всем языковым версиям:

    {% for language in shop.languages %}
    <link rel="alternate" hreflang="{{ language.iso_code }}" href="{{ canonical_url | replace: shop.domain, language.domain }}" />
    {% endfor %}

    Решение 2: Ручное исправление кода (статический сайт)

    Создайте таблицу соответствий для каждой языковой версии (например, в Excel), где перечислены все группы URL, которые нужно связать между собой.

    Добавьте теги в страницу согласно этой таблице, например:


    <link rel="alternate" hreflang="en" href="https://example.com/en/page" />
    <link rel="alternate" hreflang="de" href="https://example.com/de/page" />
    <link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />

    Также синхронизируйте hreflang-теги на немецкой и французской страницах, чтобы они содержали ссылки на английскую страницу.

    Решение 3: Автоматизация на стороне сервера (например, Nginx)

    Динамически генерируйте hreflang-теги с помощью обратного прокси и правил сопоставления:

    location / {
    add_header Link "<https://$host/en$uri>; rel=alternate; hreflang=en";
    add_header Link "<https://$host/de$uri>; rel=alternate; hreflang=de";
    }

    ​Конфликт с тегами Canonical​

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

    Более частая проблема заключается в том, что многие CMS по умолчанию указывают Canonical-тегами все языковые версии на главную страницу (например, x-default), из-за чего другие языковые версии не индексируются отдельно.

    Причина конфликта и правила приоритета

    Порядок приоритета обработки тегов hreflang и Canonical поисковыми системами:

    Приоритет у Canonical: если страница A указывает тегом Canonical на страницу B, поисковики будут считать A копией B, даже если на A есть hreflang — он будет проигнорирован.

    Сценарии, когда hreflang не работает:

    1. Французская страница указывает Canonical на английскую страницу → французская страница не будет показана пользователям во Франции.
    2. Все многоязычные страницы имеют общий Canonical на главную страницу → все языковые версии считаются дублированным контентом.

    Исключение из правила:

    • Если Canonical указывает на саму себя (то есть <link rel="canonical" href="URL текущей страницы"/>), hreflang будет работать корректно.

    Типичные ошибки и их последствия

    Ошибка 1: Конфликт настроек плагинов мультиязычности по умолчанию

    • Пример: В плагине Yoast SEO для WordPress по умолчанию канонический тег (Canonical) для многоязычных страниц указывает на страницу на основном языке. Например, для немецкой страницы тег Canonical будет таким: <link rel="canonical" href="https://example.com/en/page"/>.
    • Последствия: Немецкая страница считается дубликатом английской страницы и не отображается в поисковой выдаче на немецком языке, что приводит к потере более 50% трафика.

    Ошибка 2: Влияние динамических параметров

    • Пример: URL-адреса с параметрами (например, example.com/page?lang=de) имеют Canonical-ссылку на версию без параметров (example.com/page), при этом последняя не настроена с hreflang.
    • Последствия: Немецкие страницы с параметрами не индексируются, и пользователи видят только страницу на языке по умолчанию.

    Ошибка 3: Отсутствие отдельного указания региональных вариантов

    • Пример: Страница en-US имеет Canonical-ссылку на общую английскую страницу (en), из-за чего поисковые системы не рассматривают американскую английскую страницу как самостоятельную ценную страницу.
    • Последствия: Пользователи из США могут быть перенаправлены на страницу en (например, британский английский), что ухудшает локализованный опыт.

    Инструменты для проверки и методы диагностики

    Инструмент 1: Google Search Console

    • Откройте отчет “Покрытие”, отфильтруйте вкладку “Исключенные” по категориям “Дубликаты страниц” или “Отправлено, но не индексировано”, чтобы проверить, есть ли проблемы с hreflang из-за конфликтов Canonical.

    Инструмент 2: Screaming Frog

    • После сканирования сайта отфильтруйте страницы, содержащие одновременно теги hreflang и Canonical, проверьте, указывают ли они на другую страницу (а не на себя).
    • Экспортируйте данные и отфильтруйте строки с условием: Canonical != Self-URL.

    Инструмент 3: DeepCrawl

    • Настройте пользовательские правила оповещения, чтобы получать предупреждения при несоответствии между hreflang и Canonical.

    Планы исправления и практические шаги

    План 1: Корректировка настроек плагина CMS (например, Yoast SEO)

    1. Перейдите в настройки мультиязычности и отключите опцию “Canonical-ссылка на основную страницу”.
    2. В расширенных настройках включите опцию “Создавать отдельный Canonical для каждой языковой версии”.

    План 2: Ручное исправление кода

    Внутри <head> убедитесь, что Canonical-ссылка указывает на саму страницу, например:

    <!-- Немецкая страница с Canonical на саму себя -->
    <link rel="canonical" href="https://example.com/de/page" />

    План 3: Серверная настройка (например, Nginx)

    Динамическое формирование Canonical-ссылки для текущей языковой версии:

    location /de/ {
    add_header Link "<https://example.com/de/$uri>; rel=canonical";
    }

    Ошибки сервера или неподдерживаемые HTTP-запросы

    Например, если динамическая страница не загружается полностью из-за тайм-аута сервера, теги hreflang в <head> могут отсутствовать;

    Или если мобильная страница возвращает временный редирект 302 вместо статуса 200, поисковые системы могут игнорировать разметку;

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

    Типы серверных ошибок и их влияние

    Ключевые коды состояния и их последствия:
    404 Not Found

    • Сценарий: Французская страница указана в hreflang других языковых версий, но фактический URL был удалён или указан с ошибкой.
    • Последствия: Поисковые системы считают такую hreflang-связь недействительной, французская страница не индексируется, что также снижает доверие к другим языковым версиям.

    500 Internal Error

    • Сценарий: Сбой сервера приводит к невозможности загрузки динамически сгенерированных hreflang-тегов.
    • Последствия: Страница возвращает ошибку 500, hreflang полностью не работает, возможно временное ограничение индексации сайта поисковыми системами.

    302 Temporary Redirect

    • Сценарий: Мобильная версия страницы временно перенаправляется на URL для десктопа без передачи hreflang-тегов.
    • Последствия: Поисковая система может учесть только hreflang десктопной версии, игнорируя мобильную языковую версию.

    Проблемы загрузки динамических страниц

    Недостатки рендеринга JavaScript

    • Пример: Одностраничные приложения (SPA) на React/Vue добавляют hreflang-теги динамически через JavaScript без предварительного рендеринга.
    • Последствия: Поисковые роботы могут не исполнять JavaScript, в результате чего hreflang-теги остаются не прочитанными.

    Проблемы с настройками CDN/кеширования

    • Пример: Настройки CDN игнорируют hreflang в <head> или кэшируют неправильную языковую версию.
    • Последствия: Пользователи могут получать страницы на разных языках при доступе к одному и тому же URL, что нарушает корректность hreflang-связей.

    Тайм-аут сервера и проблемы производительности

    • Пример: Время загрузки страницы слишком велико (>5 секунд), поисковик прекращает сканирование раньше времени и не считывает hreflang полностью.
    • Последствия: Часть языковых связей теряется, что особенно критично для крупных многоязычных сайтов.

    Инструменты диагностики и методы проверки

    Google Search Console

    • Используйте отчет о покрытии для проверки страниц, исключенных из-за ошибок сервера (404/500), чтобы выявить URL с мультиязычными версиями.

    Screaming Frog

    1. Включите опцию «Проверка hreflang» в настройках сканирования.
    2. Отфильтруйте результаты по ошибкам сервера (4xx, 5xx), чтобы найти страницы с hreflang.

    Анализ логов сервера

    • Используйте логи сервера (например, access.log Nginx), чтобы отследить запросы поисковых роботов (User-Agent с Googlebot) и выявить URL, которые часто возвращают ошибки.

    Методы исправления и практические шаги

    Исправление ошибок сервера

    Проблема 404

    • Проверьте наличие всех URL, указанных в hreflang, и устраните битые ссылки.
    • Если страница была удалена, уберите соответствующий hreflang-ссылка на других языках.

    Проблема 500

    • Оптимизируйте ресурсы сервера (например, увеличьте память, настроите пул подключений к базе данных) для снижения риска сбоев.
    • Настройте мониторинг и оповещения (например, через New Relic), чтобы оперативно обнаруживать и устранять неисправности.

    Оптимизация динамических страниц

    Решение с предварительным рендерингом

    • Используйте SSR-фреймворки, такие как Next.js или Nuxt.js, чтобы hreflang-теги присутствовали в исходном HTML сразу.
    • Настройте сервисы предварительного рендеринга (например, Prerender.io) для предоставления статичных версий страниц поисковым роботам.

    Коррекция настроек CDN

    1. В настройках CDN установите «не кэшировать» или короткий срок хранения (например, 1 час) для языковых путей, таких как /de/ или /fr/.
    2. Убедитесь, что CDN полностью передает содержимое <head> без изменений HTML.

    Оптимизация производительности

    • Сожмите ресурсы страницы (изображения, CSS/JS), чтобы сократить время загрузки до менее 3 секунд.
    • Используйте инструменты (например, Google Lighthouse) для поиска и устранения блокирующих рендеринг проблем.

    Повторяющийся контент из-за динамических параметров

    Чрезмерное использование динамических параметров в URL (например, ?utm_source=ads или ?sessionid=123) является «скрытой» причиной дублирования контента на многоязычных сайтах.

    Например, одна и та же испанская страница может иметь несколько URL с разными параметрами (например, /es/page?ref=facebook и /es/page?ref=email), которые поисковики рассматривают как отдельные страницы, что приводит к дублированию контента.

    Влияние и классификация параметров

    Обязательные параметры для сохранения:

    1. Параметры пагинации (например, ?page=2): используются для различения блоков контента, необходимо сохранять, но корректно настраивать (например, указывать на главную страницу через rel="canonical").
    2. Параметры языка/региона (например, ?lang=de): если язык не указан в URL-пути (например, /de/), такие параметры должны сохраняться и соответствовать hreflang.

    Параметры, которые необходимо удалить:

    1. Трековые параметры (например, ?utm_source, ?ref=social): не влияют на содержимое страницы и должны быть удалены из hreflang.
    2. ID сессий (например, ?sessionid=123): параметры для отслеживания пользователей, могут создавать множество дублирующих URL.

    Частые ошибки и их последствия

    Ошибка 1: Параметры не нормализованы

    • Пример: Одна и та же французская страница доступна по разным URL с параметрами (например, /fr/page?utm=ads и /fr/page?utm=email), и обе указаны в hreflang как отдельные страницы.
    • Последствия: Поисковые системы индексируют дублирующие страницы, что приводит к размытию веса и падению позиций французской страницы.

    Ошибка 2: Параметры отсутствуют в hreflang

    • Пример: Английская страница в hreflang ссылается на /de/page, но фактический URL немецкой страницы — /de/page?lang=de, из-за чего связь нарушается.
    • Последствия: Немецкая страница считается отдельным контентом и не связывается с английской страницей.

    Ошибка 3: Параметры пагинации мешают основному контенту

    • Пример: Страница со списком товаров /es/products?page=2 в hreflang не ссылается на основную страницу списка /es/products.
    • Последствия: Пагинация может быть ошибочно воспринята как отдельная языковая страница, что приведёт к конкуренции с главной страницей за трафик.

    Методы проверки с помощью инструментов

    Google Search Console:

    • В отчёте «Покрытие» отфильтруйте URL с пометкой «Отправлен, но не проиндексирован», чтобы проверить, исключены ли они из-за дублирования параметров.

    Screaming Frog:

    1. При сканировании включите опцию «Игнорировать параметры URL» и сравните содержимое страниц с параметрами и без них.
    2. Отфильтруйте теги hreflang и проверьте, есть ли несоответствия из-за URL с параметрами.

    Поиск с помощью регулярных выражений:

    • Используйте инструменты анализа логов (например, ELK Stack), чтобы с помощью регулярных выражений фильтровать запросы поисковых роботов с параметрами (например, utm_*) и подсчитать количество дублирующих обращений.

    Решения и практические шаги

    Решение 1: Нормализация параметров (настройка сервера)

    Пример правила для Apache:

    RewriteCond %{QUERY_STRING} ^utm_
    RewriteRule ^(.*)$ /$1? [R=301,L]
    • Назначение: автоматически удаляет все параметры utm_ и выполняет 301 редирект на URL без параметров.

    Решение 2: Согласование hreflang и canonical

    • В hreflang указывайте только URL без параметров (например, /de/page).
    • На страницах с параметрами добавьте тег canonical, указывающий на версию без параметров:
    <link rel="canonical" href="https://example.com/de/page" />

    Решение 3: Настройка параметров URL в Google Search Console

    1. В настройках параметров URL укажите, что параметры вроде utm_ и sessionid «Не влияют на контент страницы».
    2. Для параметров пагинации (например, page) установите значение «Пагинация», чтобы помочь поисковым системам понять их назначение.

    Оптимизация hreflang на мультиязычных сайтах — это не «одна настройка навсегда».
    Идеальное решение начинается с устранения этих, казалось бы, мелких технических ошибок.

    Picture of Don Jiang
    Don Jiang

    SEO本质是资源竞争,为搜索引擎用户提供实用性价值,关注我,带您上顶楼看透谷歌排名的底层算法。

    最新解读
    滚动至顶部