Что именно должна обеспечить техническая 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.