К основному контенту

Паттерн · 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 (если политика — полное исключение из индекса).

Первоисточники

Нужно внедрить под ваш домен и стек?

Короткая форма: имя, телефон и сайт. После отправки — ответ с порядком работ и ориентиром по этапам; задачу уточняют при контакте.