Next.js에서 Redirect와 Rewrite 설정 방법에 대해 알아보겠습니다.
Redirect와 Rewrite 설정은 next.config.js 파일에서 설정하게 됩니다.
next.config.js
Next.js에서 커스텀 설정을 하기 위해서는 프로젝트 디렉터리의 루트에 next.config.js 또는 next.config.mjs 파일을 만들 수 있습니다. next.config.js는 JSON 파일이 아닌 일반 Node.js 모듈입니다.
1 | /** @type {import('next').NextConfig} */ |
Next.js 서버 및 빌드 단계에서 사용되며 브라우저 빌드에는 포함되지 않습니다.
Redirects (URL변경됨)
Redirect 을 사용하면 들어오는 request 경로를 다른 destination 경로로 Redirect 할 수 있습니다. Redirect 을 사용하려면 next.config.js 에서 redirects 키를 설정합니다.
1 | const nextConfig = { |
redirects은 source, destination 및 permanent 속성이 있는 객체를 포함하는 배열을 반환하는 비동기 함수입니다.
- source: 들어오는 request 경로 (request 경로)
- destination: 라우팅 하려는 경로 (redirect 할 경로)
- permanent:
true인 경우 클라이언트와 search 엔진에 redirect를 영구적으로 cache 하도록 지시하는 308 status code를 사용하고,false인 경우 일시적이고 cache 되지 않은 307 status code를 사용합니다.
request 경로에 요청되는 모든 쿼리 값도 destination 으로 전달됩니다.
1 | const nextConfig = { |
예를 들어 /old-blog/post-1?hello=world 요청이 들어오면 /blog/post-1?hello=world 경로로 Redirect 됩니다.
Rewrites (URL변경되지 않음)
Rewrites를 사용하면 들어오는 request 경로를 다른 destination 경로에 매핑할 수 있습니다.
Rewrites은 URL 프록시 역할을 하고 destination 경로를 mask 하여 사용자가 사이트에서 위치를 변경하지 않은 것처럼 보이게 합니다. 반대로 redirects은 새 페이지로 reroute 되고 URL 변경 사항을 표시합니다.
1 | const API_KEY = process.env.API_KEY; |
1 | // 사용 |
API를 통해 데이터를 조회할 때 API Key가 필요한 경우가 있습니다. 그럴 경우 API Key가 노출되어 위험할 수 있습니다. 위의 내용처럼 Rewrites를 사용하여 API 주소로 매핑을 하여 노출되지 않도록 해결하였습니다.