跳到内容

robots.txt

添加或生成一个 robots.txt 文件,该文件符合 Robots Exclusion Standard 标准,位于 app 目录的根目录中,用于告知搜索引擎爬虫他们可以访问您网站上的哪些 URL。

静态 robots.txt

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

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

生成 Robots 文件

添加一个 robots.jsrobots.ts 文件,该文件返回一个 Robots 对象

须知robots.js 是一个特殊的路由处理器,默认情况下会被缓存,除非它使用了动态 API动态配置 选项。

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.0引入了 robots