Да асноўнага зместу

Патэрн · TypeScript

robots.txt і метаданыя robots у Next.js App Router

Статычны robots праз app/robots.ts і noindex на маршруце праз generateMetadata.

Узровень: базавыАцэнка часу: ~25 хв

Глабальныя правілы ў robots.ts; чарнавікі ці службовыя старонкі выключаюцца праз метаданыя маршруту.

  • Не адпраўляйце супярэчлівыя сігналы паміж robots.txt і meta robots
  • URL sitemap у robots павінен быць кананічным
  • preview-зборкі часта патрабуюць поўнага 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 для чарнавіка на маршруце:

import type { Metadata } from 'next'

export async function generateMetadata(): Promise<Metadata> {
  return {
    title: 'Draft',
    robots: { index: false, follow: false },
  }
}

Праверка

  • GET /robots.txt вяртае тэкст з правіламі User-agent, пры неабходнасці Disallow і адзін радок Sitemap: з кананічным HTTPS URL sitemap.
  • Выключаныя старонкі маюць noindex у HTML і не трапляюць у sitemap пры поўным выключэнні.

Крыніцы

Трэба ўнясці пад ваш домен і стэк?

Кароткая форма: імя, тэлефон і сайт. Пасля адпраўкі — адказ з парадкам работ і арыенцірам па этапах; дэталі ўдакладняюцца пры кантакце.