Programming/next.js

Next.js로 SEO 최적화: 검색 엔진에서 웹사이트 순위 올리기

Fillim 2024. 12. 4. 12:25

Next.js는 React 기반의 프레임워크로, 서버사이드 렌더링(SSR)정적 사이트 생성(SSG)을 지원하여 기본적으로 SEO 친화적인 환경을 제공합니다.
이 글에서는 Next.js에서 제공하는 기능을 활용해 SEO를 최적화하는 방법과 추가적인 팁을 공유합니다. 😊

 

 

1. SEO 최적화의 중요성

검색 엔진 최적화(SEO)는 검색 결과에서 웹사이트의 가시성을 높여 더 많은 방문자를 유도하는 중요한 전략입니다.
Next.js는 다음과 같은 SEO 문제를 효과적으로 해결합니다:

  • CSR(클라이언트 사이드 렌더링)의 초기 로딩 문제
  • 검색 엔진 크롤러가 JavaScript 렌더링을 처리하지 못하는 상황

2. Next.js에서 SEO 최적화 방법

1) 서버사이드 렌더링(SSR) 활용

getServerSideProps를 사용하여 동적으로 데이터를 렌더링합니다.
이 방식은 검색 엔진 크롤러가 완성된 HTML을 읽을 수 있게 해줍니다.

예제: SSR로 데이터 렌더링

export async function getServerSideProps() {
  const res = await fetch('https://jsonplaceholder.typicode.com/posts');
  const posts = await res.json();

  return { props: { posts } };
}

export default function Home({ posts }) {
  return (
    <div>
      <h1>Blog Posts</h1>
      <ul>
        {posts.map((post) => (
          <li key={post.id}>{post.title}</li>
        ))}
      </ul>
    </div>
  );
}

 

2) 메타 태그 설정

Next.js는 기본적으로 Head 컴포넌트를 제공하여 페이지별로 메타 태그를 쉽게 설정할 수 있습니다.

예제: 동적 메타 태그 설정

import Head from 'next/head';

export default function Home() {
  return (
    <>
      <Head>
        <title>SEO 최적화 블로그</title>
        <meta name="description" content="Next.js로 SEO를 최적화하는 방법을 알아보세요." />
        <meta name="keywords" content="Next.js, SEO, 서버사이드 렌더링, 정적 사이트 생성" />
        <meta name="author" content="Your Name" />
      </Head>
      <h1>Welcome to SEO Optimized Blog</h1>
    </>
  );
}

 

3) 정적 사이트 생성(SSG) 활용

Next.js의 getStaticProps를 사용하면 페이지를 미리 렌더링하여 빠른 로딩 속도를 제공하면서 SEO를 최적화할 수 있습니다.

예제: SSG로 정적 콘텐츠 제공

export async function getStaticProps() {
  const res = await fetch('https://jsonplaceholder.typicode.com/posts');
  const posts = await res.json();

  return { props: { posts } };
}

export default function Home({ posts }) {
  return (
    <div>
      <h1>Static Blog Posts</h1>
      <ul>
        {posts.map((post) => (
          <li key={post.id}>{post.title}</li>
        ))}
      </ul>
    </div>
  );
}

 

4) 동적 라우팅 SEO

Next.js의 동적 라우팅을 활용하면 블로그나 제품 페이지 같은 동적 콘텐츠에 적합한 SEO 최적화를 할 수 있습니다.

예제: 동적 라우트 페이지

// pages/posts/[id].js
export async function getStaticPaths() {
  const res = await fetch('https://jsonplaceholder.typicode.com/posts');
  const posts = await res.json();

  const paths = posts.map((post) => ({
    params: { id: post.id.toString() },
  }));

  return { paths, fallback: false };
}

export async function getStaticProps({ params }) {
  const res = await fetch(`https://jsonplaceholder.typicode.com/posts/${params.id}`);
  const post = await res.json();

  return { props: { post } };
}

export default function Post({ post }) {
  return (
    <div>
      <h1>{post.title}</h1>
      <p>{post.body}</p>
    </div>
  );
}

 

3. 추가 SEO 최적화 팁

1) 정적 파일 최적화

public 폴더를 활용해 정적 파일(이미지, 문서 등)을 제공하며, 이미지 최적화를 위해 next/image를 사용합니다.

예제: next/image 사용

import Image from 'next/image';

export default function Home() {
  return (
    <div>
      <h1>SEO Optimized Images</h1>
      <Image src="/example.jpg" alt="Example Image" width={800} height={600} />
    </div>
  );
}

 

2) 사이트맵 생성

검색 엔진 크롤러가 사이트 구조를 잘 이해하도록 사이트맵을 추가합니다.

  • next-sitemap 라이브러리를 활용하세요.
npm install next-sitemap
// next-sitemap.config.js
module.exports = {
  siteUrl: 'https://yourwebsite.com',
  generateRobotsTxt: true,
};

3) robots.txt 추가

검색 엔진이 특정 페이지를 크롤링하지 못하게 설정합니다.

User-agent: *
Disallow: /private-page

 

 

Next.js는 기본적으로 SEO 친화적인 환경을 제공하지만, 메타 태그 관리, 이미지 최적화, 동적 라우팅과 같은 추가적인 최적화 작업으로 더 나은 SEO 성능을 얻을 수 있습니다.