Next.js 모바일과 PC를 구분해서 다른 경로로 이동 시키기(middleware 사용)
이슈
- 모바일로 접속할 때와 PC로 접속할 때 다른 화면을 보여줘야한다
- 모바일로 접속 시 기존 앱 경로를 보여주고
- PC로 접속 시 v2 앱 경로를 보여준다
해결
- Next.js의 middleware를 사용하여 모바일로 접속했는지 PC로 접속했는지 확인 후 의도한 화면의 경로로 redirect 시켰습니다
- config의 matcher의 부정 예측으로 _next(빌드된 파일이 존재하는 곳), api, favicon.ico를 제외한 나머지 요청에 대해서 미들웨어를 실행합니다
- isMobileUserAgent함수에서 요청 헤더의 user-agent를 검사해서 모바일인지 아닌지 확인합니다
- isAsset으로 이미지 같은 정적 파일을 요청하는 경우 아무 동작없이 종료합니다
- 이슈의 내용과 같이 모바일인 경우 기존 앱 경로를 보여주고 PC로 접속 시 v2 앱 경로의 앱을 보여줍니다