ПРАКТИЧЕСКИЙ РАЗБОР · 8 минут

Схема технической индексации в Next.js

SEO в Next.js App Router: sitemap, robots, canonical и языковые URL

Что именно должна обеспечить техническая SEO-основа

Поисковому роботу нужны доступные HTML-страницы, понятные URL и согласованные указания об индексации. В App Router Next.js эти задачи распределены между метаданными маршрутов, специальными файлами sitemap и robots и серверным рендерингом. Наличие тегов само по себе не гарантирует индексацию или позиции.

1. Начните с карты маршрутов

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

app/
  [locale]/
    page.tsx
    events/[slug]/page.tsx
  sitemap.ts
  robots.ts

Основной инвариант: сервер может отдать нужный контент по прямому запросу к URL.

2. Metadata и canonical

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

export async function generateMetadata({ params }) {
  const { slug, locale } = await params;
  return {
    title: 'Событие — EventMap',
    alternates: { canonical: 'https://example.com/' + locale + '/events/' + slug }
  };
}

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

3. Sitemap и robots, разные задачи

sitemap.xml перечисляет желательные для обхода URL. robots.txt указывает роботу, какие области разрешено обходить. Эти файлы не заменяют друг друга и не гарантируют включения страниц в индекс.

// app/robots.ts (пример)
export default function robots() {
  return { rules: { userAgent: '*', allow: '/' },
    sitemap: 'https://example.com/sitemap.xml' };
}

Черновые или тестовые версии сайта не должны случайно индексироваться. Проверьте, что robots, canonical и sitemap принадлежат именно production-домену.

4. Языковые адреса и hreflang

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

5. Проверка результата

  • Откройте URL напрямую и изучите исходный HTML без выполнения клиентского JavaScript.
  • Проверьте уникальные title, description и canonical для каждой страницы.
  • Запросите /robots.txt и /sitemap.xml, найдите в sitemap только правильные индексируемые адреса.
  • Проверьте языковые альтернативы и отсутствие конфликтов между ними.
  • После деплоя используйте инструменты проверки URL Google и Яндекса, не заменяя их визуальной проверкой браузера.

На курсе Next.js III эти принципы рассматриваются в контексте EventMap.