メインコンテンツまでスキップ

robots.txt

検索エンジンクローラーにサイト上でアクセスできる URL を伝えるために、app ディレクトリのrootRobots Exclusion Standard に準拠した robots.txt ファイルを追加または生成します。

静的 robots.txt

app/robots.txt
User-Agent: *
Allow: /
Disallow: /private/

Sitemap: https://acme.com/sitemap.xml

Robots ファイルを生成する

Robots オブジェクトを返す robots.js または robots.ts ファイルを追加します。

Good to know: robots.js は特別な Route Handlers であり、Dynamic API または dynamic config オプションを使用していない限り、デフォルトでキャッシュされます。

app/robots.ts
import type { MetadataRoute } from 'next'

export default function robots(): MetadataRoute.Robots {
return {
rules: {
userAgent: '*',
allow: '/',
disallow: '/private/',
},
sitemap: 'https://acme.com/sitemap.xml',
}
}

出力:

User-Agent: *
Allow: /
Disallow: /private/

Sitemap: https://acme.com/sitemap.xml

特定のユーザーエージェントをカスタマイズする

rules プロパティにユーザーエージェントの配列を渡すことにより、個別の検索エンジンボットがサイトをクロールする方法をカスタマイズできます。例えば:

app/robots.ts
import type { MetadataRoute } from 'next'

export default function robots(): MetadataRoute.Robots {
return {
rules: [
{
userAgent: 'Googlebot',
allow: ['/'],
disallow: '/private/',
},
{
userAgent: ['Applebot', 'Bingbot'],
disallow: ['/'],
},
],
sitemap: 'https://acme.com/sitemap.xml',
}
}

出力:

User-Agent: Googlebot
Allow: /
Disallow: /private/

User-Agent: Applebot
Disallow: /

User-Agent: Bingbot
Disallow: /

Sitemap: https://acme.com/sitemap.xml

Robots オブジェクト

type Robots = {
rules:
| {
userAgent?: string | string[]
allow?: string | string[]
disallow?: string | string[]
crawlDelay?: number
}
| Array<{
userAgent: string | string[]
allow?: string | string[]
disallow?: string | string[]
crawlDelay?: number
}>
sitemap?: string | string[]
host?: string
}

バージョン履歴

バージョン変更点
v13.3.0robots が導入されました