URL 스타일 커스터마이즈
출처: URL 스타일 커스터마이즈 발행일: 2024-5-8 최종 편집: 2024-9-29 원래 섹션: 사이트 설정 태그: NotionNext, SEO 요약: NotionNext URL 스타일을 직접 설정하는 방법
4.5.0 이후 버전에서는 글 URL prefix를
%category%, 즉 글이 속한 카테고리로 설정할 수 있습니다. 이렇게 하면 URL이 의미를 가지며 SEO에도 유리합니다. 4.5.2 이후에는 URL의 중국어 카테고리명을 영어 단어로 매핑할 수도 있습니다.
URL 구성

NotionNext의 URL
현재 블로그 목록의 글은 통일된 prefix를 가지며, 기본값은 article입니다. 따라서 목록의 글을 열면 기본 URL 경로는 다음과 같습니다.

위 링크에서 URL은 크게 세 부분으로 나눌 수 있습니다. 녹색 부분은 사이트 도메인, 빨간색 부분은 URL prefix, 파란색 부분은 데이터베이스의 slug 값입니다.
URL 최적화와 SEO
URL은 명확한 계층과 의미를 가지는 것이 좋습니다. 검색 엔진이 크롤링하고 색인하며 더 잘 랭킹하는 데 도움이 됩니다.
의미 있는 URL을 설정하는 것을 권장합니다. 예를 들어 각 글의 URL을 수동으로 설정하면 URL만 보고도 글 내용을 어느 정도 추측할 수 있습니다.
URL prefix 설정
NotionNext의 blog.config.js에서 기본 글 prefix를 설정하는 아래 항목을 찾을 수 있습니다.
POST_URL_PREFIX: process.env.NEXT_PUBLIC_POST_URL_PREFIX || 'article',기본값은 article입니다. post, p 등 원하는 다른 prefix로 바꿀 수 있습니다.
변수 설정
아래 변수를 설정할 수 있으며, 웹페이지 생성 후 해당 값으로 동적으로 치환됩니다.
연월일은 블로그 글의 date 필드에서 가져오고, 카테고리명은 Notion 데이터베이스의 category에서 가져옵니다.

사용 예시
예를 들어 SEO 가이드 사이트는 URL 스타일에 카테고리를 사용합니다. 글 링크 형식은 다음과 같습니다: https://seo.tangly1024.com/seo-basics/what-is-google-seo

카테고리명 매핑
카테고리 이름이 중국어이고 URL에서는 영어로 매핑하고 싶다면 4.5.2 이후 버전으로 업데이트하세요.
URL의 카테고리명은 원하는 영어 단어로 매핑할 수 있습니다. 예: xx.com/학습/slug -> xx.com/learning/slug
사용 방법
Notion Config에 다음과 비슷한 설정을 추가합니다.
예시:

참고 템플릿 데이터베이스에서 설정할 수 있습니다.
주의: 여기서 가장 흔한 오류는 Notion이 사용자가 입력한 영어 큰따옴표를 자동으로 중국어 큰따옴표로 바꾸어 설정을 읽지 못하게 만드는 것입니다. 따라서 직접 큰따옴표를 입력하기보다 위 설정을 복사해 수정하는 것을 권장합니다.
큰따옴표와 관련된 설정은 다른 곳에서도 비슷한 문제가 생길 수 있으므로 특히 주의하세요.
조합 사용
위 변수는 함께 사용할 수 있지만 반드시 /로 구분해야 합니다.
예:
POST_URL_PREFIX를 %category%/%year%/%month%/%day%로 설정하면 블로그 글 URL 스타일은 다음과 같습니다.
https://[domain]/카테고리명/2024/12/31/글id
제목 기반 글 주소 (이 저장소 확장)
업스트림 NotionNext에는 없는 동작입니다.
specs/021-title-slug-url/참고.
Notion slug 속성값(예: 406879, instruction/406676)은 그대로 두고, 실제로 노출되는 주소는 글 제목에서 만듭니다.
| 구분 | 값 | 쓰임 |
|---|---|---|
| 대표 주소 | /article/상여금-매월-균등분할-지급시-통상임금-포함여부 | 주소창·목록 링크·canonical·사이트맵·RSS·구조화 데이터 |
| 옛 주소 | /article/406879 | 영구 별칭. 접속하면 대표 주소로 이동합니다 |
규칙
- 제목을 NFC로 정규화하고, 공백은 하이픈으로 바꾸고, 문자·숫자·하이픈만 남깁니다. 예약 문자(
/ ? # %등)·제어문자·이모지는 지웁니다. - 40자를 넘으면 어절 경계에서 자릅니다.
- 제목에서 쓸 글자가 남지 않으면(이모지뿐인 제목 등) 옛 주소를 그대로 씁니다.
- 제목이 겹치면 발행일이 이른 글이 맨 주소를 갖고, 나머지는 옛 주소의 마지막 세그먼트를 접미사로 받습니다(
...-407002). 새 글이 기존 글의 주소를 빼앗지 않습니다. - 외부 링크를
slug에 넣은 글은 손대지 않습니다.
옛 주소와 지난 주소
- Notion의
slug속성은 고치지 않습니다. 코드가 그 값을legacySlug로 보관합니다. - 옛 주소로 들어오면 대표 주소로 307(임시) 이동합니다. 영구 이동을 쓰지 않는 이유는 제목을 고치면 대표 주소도 바뀌기 때문입니다. 색인 통합은 canonical이 합니다.
- 제목을 고쳐 주소가 바뀌면 지난 주소를 Redis에 자동으로 쌓아 계속 이어 줍니다. 편집자가 채워야 할 칸은 없습니다.
- 이동하면서 쿼리 파라미터(
?password=,?utm_*)는 사라집니다. 비밀번호가 걸린 글이나 광고 링크는 현재 제목 주소로 공유하세요.
조회수
조회수는 제목 주소가 아니라 옛 주소를 키로 셉니다. 제목을 고쳐도 누적 조회수가 갈라지지 않습니다.
제한
정적 내보내기(EXPORT=true)는 지원하지 않습니다. 그 모드에서는 목록에 없는 옛 주소가 404가 됩니다.
원문 링크
https://docs.tangly1024.com/article/notion-next-url-customize


큰따옴표와 관련된 설정은 다른 곳에서도 비슷한 문제가 생길 수 있으므로 특히 주의하세요.