Паттерн · TypeScript
robots.txt и метаданные robots в Next.js App Router
Статический robots через app/robots.ts и точечный noindex через generateMetadata.
Уровень: базовыйОценка времени: ~25 мин
Глобальные правила — в robots.ts; запрет индексации черновиков — в metadata конкретного маршрута.
- Не дублируйте противоречивые сигналы между robots.txt и meta robots
- sitemap в robots должен быть каноническим
- для превью-деплоев часто нужен полный noindex
Поисковый робот читает и
robots.txt, и<meta name="robots">. Разделяйте: файл — общие правила, мета — страницы, которые не должны попасть в индекс.
Код
app/robots.ts в этом проекте:
import type { MetadataRoute } from 'next'
import { getSiteUrl } from '@/lib/site'
const host = getSiteUrl().replace(/\/$/, '')
export default function robots(): MetadataRoute.Robots {
return {
rules: [
{ userAgent: '*', allow: '/' },
{ userAgent: 'GPTBot', allow: '/' },
{ userAgent: 'Google-Extended', allow: '/' },
{ userAgent: 'CCBot', allow: '/' },
{ userAgent: 'anthropic-ai', allow: '/' },
{ userAgent: 'Claude-Web', allow: '/' },
{ userAgent: 'ClaudeBot', allow: '/' },
{ userAgent: 'PerplexityBot', allow: '/' },
{ userAgent: 'Applebot-Extended', allow: '/' },
],
sitemap: `${host}/sitemap.xml`,
host,
}
}
Точечный noindex в generateMetadata черновика или служебной страницы:
import type { Metadata } from 'next'
export async function generateMetadata(): Promise<Metadata> {
return {
title: 'Черновик',
robots: { index: false, follow: false },
}
}
Проверка
GET /robots.txtотдаёт текстовый ответ: правилаUser-agent, при необходимостиDisallow, одна строкаSitemap:с каноническим HTTPS-URL карты сайта.- На закрытых страницах в HTML есть
noindex, и они не попадают в sitemap (если политика — полное исключение из индекса).
Первоисточники
Другие паттерны
- Next.js
Канонический URL и метаданные страницы в Next.js App Router
Паттерн generateMetadata с canonical и Open Graph — основа SEO-гигиены.
Открыть паттерн - Индексация
Динамический sitemap.xml в Next.js (app/sitemap.ts)
Единый sitemap со статическими и контентными URL; согласование с collectIndexableUrls и каноникалом.
Открыть паттерн
Материалы блога
- SEO
SEO-архитектура: почему сайт не продает без структуры
Разбираем, как правильная структура сайта влияет на продажи и позиции в поиске. Почему дизайн вторичен, а семантика первична.
Читать статью - Процесс
Чеклист приёмки сайта: скорость, доступность и базовый техSEO до подписания акта
Зачем до акта смотреть PageSpeed Insights и WAVE, чем лабораторные метрики отличаются от полевых, и какой минимум техSEO снижает сюрпризы после запуска.
Читать статью
Нужно внедрить под ваш домен и стек?
Короткая форма: имя, телефон и сайт. После отправки — ответ с порядком работ и ориентиром по этапам; задачу уточняют при контакте.