S.
  • Услуги
  • Для кого
  • Решения
  • Работы
  • Обо мне
  • Know-how
  • Блог
Начать проект
EN/PL/RU
  • Услуги01
  • Для кого02
  • Решения03
  • Работы04
  • Обо мне05
  • Know-how06
  • Блог07
Начать проект
EN/PL/RU
Vlad Sedenko
Независимый веб-продуктовый разработчик
ЕС / Польша / Варшава
Продукты
  • NextWooВитрина на Next.js для WooCommerce
© 2026. Все права защищены
Услуги
  • Product Discovery
  • UX/UI-дизайн
  • Разработка MVP
  • Разработка SaaS
  • Редизайн сайта
  • Безопасность веб-приложений
  • Оптимизация конверсии
  • Интеграция сервисов и автоматизация бизнеса
  • Поддержка продукта
Обзор
  • Услуги
  • Для кого
  • Работы
  • Решения
  • Обо мне
  • Блог
  • Know-how
  • Контакт
Начать проект
  • vlad@sedenko.net
  • LinkedIn
  • Конфиденциальность/Куки
Know-how/SEO-чеклист для Next.js: полный гайд по App Router (2026)

Часть 3 из 22

Canonical и hreflang: одна страница — один адрес

Canonical и hreflang в Next.js: борьба с дублями, взаимные языковые ссылки, локализованные слаги и правильный x-default.

2026-07-15
Canonical и hreflang: одна страница — один адрес
Все темы гайда
  1. 01Стратегия рендеринга: что на самом деле видит краулер?
  2. 02Metadata API: тайтлы, описания и паттерн с шаблоном
  3. 03Canonical и hreflang: одна страница — один адрес
  4. 04Open Graph и динамические OG-картинки
  5. 05sitemap.ts и robots.ts: файловые конвенции вместо рукописного XML
  6. 06Структурированные данные: JSON-LD, который приносит rich results
  7. 07Картинки, шрифты и скрипты: классическое трио производительности
  8. 08Core Web Vitals: три числа, которые измеряет Google
  9. 09Редиректы, 404 и коды ответов
  10. 10Кеширование и свежесть контента
  11. 11AEO/GEO: как попасть в ответы ChatGPT, Perplexity и Google AI Overviews
  12. 12Мониторинг: SEO — это цикл, а не задача на запуск
  13. 13Траст и E-E-A-T: как сделать сайт заслуживающим доверия
  14. 14Image SEO: как превратить картинки в трафик
  15. 15Внутренняя перелинковка и архитектура сайта
  16. 16Поисковые интенты: страницы под то, что люди реально ищут
  17. 17Programmatic SEO в Next.js: страницы в масштабе без спама
  18. 18SEO-миграция: переезд на Next.js без потери трафика
  19. 19Пагинация и фасетная навигация без раздувания индекса
  20. 20Доступность и SEO: одна работа — две награды
  21. 21Угасание контента: обновить, склеить или удалить
  22. 22Off-page для разработчиков: ссылки, которые не покупают

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

Canonical указывает предпочтительный URL

Он сообщает поисковикам, какой URL предпочтителен, когда один контент доступен по нескольким адресам (трекинг-параметры, слэши, пагинация):

export async function generateMetadata({ params }): Promise<Metadata> {
  return {
    alternates: {
      canonical: `/blog/${params.slug}`,
    },
  };
}

hreflang связывает языковые версии

Он сообщает поисковикам, какие языковые версии существуют, и помогает выбрать подходящую. Способ получения адресов зависит от модели контента; пример предполагает, что getLocalizedUrls() возвращает реальный URL каждой локали:

export async function generateMetadata({ params }): Promise<Metadata> {
  const { lang } = params;
  const localizedUrls = await getLocalizedUrls(params);

  return {
    alternates: {
      canonical: localizedUrls[lang],
      languages: {
        ...localizedUrls,
        "x-default": localizedUrls.en,
      },
    },
  };
}

Типичные ошибки реализации

  • hreflang должен быть взаимным. Если EN-страница ссылается на PL-версию, PL-страница обязана ссылаться обратно — иначе Google может не учитывать всю группу.
  • Каждая страница должна включать саму себя в карту languages.
  • Локализованные слаги: если польский пост живёт по другому слагу, hreflang должен указывать на реальный локализованный URL, а не на механический /pl/ + тот же слаг. Генерируйте карту из источника контента, не хардкодьте.
  • x-default — для пользователей, чей язык вы не поддерживаете; направьте его на основную локаль.
  • Canonical должен вести на страницу с кодом 200 и без noindex — canonical на редиректящий URL игнорируется.

Чеклист:

  • Самоссылающийся canonical на каждой индексируемой странице
  • hreflang сгенерирован из реальных локализованных слагов и взаимен во все стороны
  • Есть x-default
  • URL-параметры (utm, фильтры, сортировки) канонизируются на чистый URL
← НазадMetadata API: тайтлы, описания и паттерн с шаблономДальше →Open Graph и динамические OG-картинки

01—22

Все темы гайда

  1. 01Стратегия рендеринга: что на самом деле видит краулер?→
  2. 02Metadata API: тайтлы, описания и паттерн с шаблоном→
  3. 03Canonical и hreflang: одна страница — один адрес•
  4. 04Open Graph и динамические OG-картинки→
  5. 05sitemap.ts и robots.ts: файловые конвенции вместо рукописного XML→
  6. 06Структурированные данные: JSON-LD, который приносит rich results→
  7. 07Картинки, шрифты и скрипты: классическое трио производительности→
  8. 08Core Web Vitals: три числа, которые измеряет Google→
  9. 09Редиректы, 404 и коды ответов→
  10. 10Кеширование и свежесть контента→
  11. 11AEO/GEO: как попасть в ответы ChatGPT, Perplexity и Google AI Overviews→
  12. 12Мониторинг: SEO — это цикл, а не задача на запуск→
  13. 13Траст и E-E-A-T: как сделать сайт заслуживающим доверия→
  14. 14Image SEO: как превратить картинки в трафик→
  15. 15Внутренняя перелинковка и архитектура сайта→
  16. 16Поисковые интенты: страницы под то, что люди реально ищут→
  17. 17Programmatic SEO в Next.js: страницы в масштабе без спама→
  18. 18SEO-миграция: переезд на Next.js без потери трафика→
  19. 19Пагинация и фасетная навигация без раздувания индекса→
  20. 20Доступность и SEO: одна работа — две награды→
  21. 21Угасание контента: обновить, склеить или удалить→
  22. 22Off-page для разработчиков: ссылки, которые не покупают→

Нужно, чтобы это сделали за вас?

Я провожу аудит и чиню техническое SEO на сайтах Next.js — индексация, скорость, hreflang и видимость в AI.

Услуга «Техническое SEO»