robots.txt
검색 엔진 크롤러에게 사이트의 어떤 URL에 접근할 수 있는지 알려주기 위해 robots.txt 표준에 맞는 robots.txt
파일을 app
디렉토리의 루트에 추가하거나 생성합니다.
정적 robots.txt
app/robots.txt
User-Agent: *
Allow: /
Disallow: /private/
Sitemap: https://acme.com/sitemap.xml
Robots 파일 생성하기
Robots
객체를 반환하는 robots.js
또는 robots.ts
파일을 추가합니다.
알아두면 좋은 점:
robots.js
는 동적 함수나 동적 config 옵션을 사용하지 않는 한 기본적으로 캐시되는 특별한 Route Handler입니다.
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",
};
}
app/robots.js
export default function 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",
};
}
app/robots.js
export default function 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 도입. |