웹 바이탈을 라이트하우스로 체크하면서 접근성과 검색엔진 최적화 점수가 각각 85점과 73점으로 낮았습니다. 이왕이면 좋은 점수를 받고 싶어서 개선을 위해 SEO의 궁금한 점을 간략히 소개하고 검색엔진 최적화를 시도한 방법들을 정리합니다.
1차적으로 index.html의 메타태그 추가와 React-Helmet-asnyc 라이브러리로 추가 적용으로 라이트하우스 점수는 91점이 되었습니다.
메타 태그로 사이트의 기본 정보를 설정합니다. 특히 Title과 Description은 필수적입니다.
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Sun Coffee</title>
<meta name="description" content="하루의 시작은 커피로!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Sun Coffee" />
<meta property="og:description" content="하루의 시작은 커피로!" />
<meta property="og:locale" content="ko_KR" />
<!-- 이미지의 경우 크기 지정 가능 -->
<meta property="og:image" content="https://www.image.com" />
<meta property="og:image:width" content="200" />
<meta property="og:image:height" content="200" />
</head>
HTML 문서의 head 태그를 관리합니다. 페이지 별로 제목, 설명, 키워드, og태그 등을 설정할 수 있습니다.
웹 사이트 내의 링크들의 우선 순위를 알려주고 사이트의 구조를 생성해 크롤러에게 알려줍니다.
sitemap.xml으로 유용한 메타데이터를 추가하여 사용할 수 있습니다.
자세한 설명을 볼 수 있는 링크
https://www.sitemaps.org/ko/protocol.html
동적 라우트를 사용하는 프로젝트에는 라이브러리를 이용해 자동으로 사이트맵 생성하기
npm install react-router-sitemap
npm install next-sitemap
sitemap.xml
파일 작성예시:
<!-- public/sitemap.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://yourdomain.com/</loc>
<lastmod>2023-01-01</lastmod>
<changefreq>monthly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://yourdomain.com/category</loc>
<lastmod>2023-01-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<!-- 다른 URL 추가 -->
</urlset>
웹 크롤러 접근을 제어하기 위한 방법입니다. 중요하지 않은 리소스의 방문과 색인 생성을 방지할 수 있습니다.
또한 중요한 정보를 숨기기 보다는 크롤링을 제하거나 개인정보가 들어있는 사이트들을 검색엔진에 노출하고 싶지 않을 경우 사용합니다.
특히 로그인이 필요한 페이지를 차단할 필요가 있음
이탈률이 높은 페이지는 구글의 랭킹에 악영향을 줍니다.
User-agent: *
Disallow: /admin/
Disallow: /private/
Allow: /private/public-info.html
이 설정은 모든 크롤러에게 /admin/ 및 /private/ 경로를 크롤링하지 않도록 지시합니다.
그러나 /private/ 경로 아래의 public-info.html 페이지를 크롤링할 수 있도록 허용합니다.
meta 태그를 이용하여 해당 페이지는 색인되지 않도록 설정할 수 있습니다.
<head>
섹션<meta name="robots" content="index,nofollow" />
// 색인 대상O, 페이지 내 링크 수집X
<meta name="robots" content="noindex,follow" />
// 색인 대상X, 페이지 내 링크 수집O
<meta name="robots" content="noindex,nofollow" />
// 색인 대상X, 페이지 내 링크 수집X
<meta name="googlebot" content="noindex, nofollow" />
// 구글에서만 사이트 노출X
그래서 robots.txt를 설정할 때 개별 페이지의 내용을 설정하기보다는 광범위한 패턴에 중점을 두라는 안내가 Chrome 문서도구에 적혀있습니다.
robots.txt을 500KiB 미만으로 유지
파일이 500KiB보다 크면 검색엔진이 robots.txt 처리를 도중에 중지할 수 있습니다. 이렇게 하면 검색엔진에 혼란을 주어 사이트가 잘못 크롤링될 수 있습니다.
robots.txt를 작게 유지하려면 개별적으로 제외된 페이지에 덜 집중하고 더 광범위한 패턴에 더 중점을 둡니다. 예를 들어 PDF 파일의 크롤링을 차단해야 하는 경우 각 개별 파일을 금지하지 마세요. 대신 disallow: /*.pdf를 사용하여 .pdf가 포함된 모든 URL을 허용하지 않습니다.
출처: Chrome for Developers
https://www.google.com/webmasters/markup-helper/u/0/ 나 react-helmet 라이브러리에서 동적으로 생성할 수 있습니다.
출처:리액트 개발자를 위한 SEO 기초