UX·UI - FrontEnd Dev. Story

카테고리 없음

[NextJS] Redirect & Rewrite - 넥스트 경로 리다이렉트 설정방법

클로이겅쥬 2024. 3. 27. 10:34
반응형

 

노마드 Next JS 강의 듣다가 API KEY 비공개 처리 방식 부분을 듣고있었는데, Redirect 세팅 방법에 대해 배게 되면서 메모해놓기로 마음 먹었다.

 

 

 

 

Redirect VS Rewrite

- Redirect

세팅한 경로에 맞게 변경되고 도메인에 표시되어 클라이언트가 확인 가능

 

- Rewrite

세팅한 경로에 맞게 변경되지만 도메인에 표시가 되어있지않아 클라이언트가 확인 불가능

 

 

 

 

 

1. Redirect


1_ next.config.js

next.config.js 파일을 오픈한다.

 

 

 

 

 

2_ Redifrect 설정

- next.config.js

//1) test1 경로 들어가면 네이버로 이동
async redirects() {
	return [
    	{
        	source: "/test1",
            destination: "https://www.naver.com",
            permanent: false,
        }
    ]
}

//2) test2 경로 들어가면 form경로로 이동
async redirects() {
	return [
    	{
        	source: "/test2",
            destination: "/form",
            permanent: false,
        }
    ]
}

 

 

* 수정했으니 적용하려면 터미널을 재실행 시켜서 서버를 재시작한다.

 

 

 

 

 

3_ Pattern Matching - 경로 매칭

- 이전 경로를 입력했을 때, 새로운 링크로 리다이렉트 방법

- next.config.js

async redirects() {
	return [
    	{
        	source: "/old-link/:path",
            destination: "/new-link/:path",
            permanent: false,
        }
    ]
}

 

- before

localhost:3000/old-link/12345

 

-after

localhost:3000/new-link/12345

 

 

 

경로뒤에 *넣을경우 ex) ~/:path*

- next.config.js

async redirects() {
	return [
    	{
        	source: "/old-link/:path*",
            destination: "/new-link/:path*",
            permanent: false,
        }
    ]
}

 

별표를 붙여주면 모든걸 catch 가능하다.

 

- before

localhost:3000/old-link/12345/test/6789

 

-after

localhost:3000/new-link/12345 /test/6789

 

 

 

 

 

2. Rewrite


API같은 key값을 컴포넌트에 넣으면 네트워킹 체크했을 때 공개적으로 공유된다.

이를 막기위해 Rewrite 기능을 사용하여 클라이언트가 알 수 없게 설정.

 

- next.config.js

API_KEY="abcd1234"

async rewriets() {
	return [
    	{
        	source: "/api/data",
            destination: `https://api.test.com/data?api_key=${API_KEY}`,
        }
    ]
}

 

 

API 데이터 받아오는 fetch 장소에 위에 설정한 ''/api/data"를 적용.

- component files

(
    async () => {
        const data = await fetch(`api/data`).json();
    }
)()

 

 

 

 

* 위에처럼 next.config.js 파일에도 API_KEY 값을 넣고싶지 않다면,

.env 파일을 추가하여 환경 설정.

 

- .env 파일

API_KEY=abcd1234
// 따옴표(") 없음

 

- next.config.js

// API_KEY 보안 방법

const API_KEY=process.env.API_KEY;

async rewriets() {
	return [
    	{
        	source: "/api/data",
            destination: `https://api.test.com/data?api_key=${API_KEY}`,
        }
    ]
}

 

 

★ .gitignore 파일에 .env파일이 꼭 포함되도록 해야함!

 

Why? 

- git으로 push할때 같이 안올라가도록 적용하기 위해서(정보를 비공개로 유지가능).

 

 

 

 

 

 

 

글이 유용했다면

광고 한번씩 눌러주시면 티클모아 커피 맛있게 드링킹하겠습니다.

감사하겠습니다 ♥

 

 

 

 

 

반응형