Published 2022. 2. 7. 19:51
반응형
1. user-agent를 확인하고, useEffect로 모바일페이지 리다이렉트
import "../styles/globals.css";
import React, { useEffect } from "react";
import App, { AppContext, AppInitialProps } from 'next/app'
// 밑에서 mobile props 받기
function MyApp({ Component, pageProps, mobile }) {
// 현재 접속을 mobile 인지 확인하고 mobile이면 리다이렉트
// 뒤에 path와 쿼리는 javascript 문법으로 가져와서, 조건문 사용해서 뒤에 추가하기
useEffect(()=>{
if(mobile == -1){
console.log('asdad')
window.location.replace('https://m.pandaparts.co.kr');
// document.domain = 'm.pandaparts.co.kr'
}
},[])
const router = useRouter();
return (
<>
<Component {...pageProps} />
</>
);
}
MyApp.getInitialProps = async (context) => {
const { ctx, Component } = context; // next에서 넣어주는 context
let pageProps = {};
// calls page's `getInitialProps` and fills `appProps.pageProps`
const appProps = await App.getInitialProps(context);
//userAgent 확인
const userAgent = await context.ctx.req ? context.ctx.req?.headers['user-agent'] : navigator.userAgent
console.log('userAgent',userAgent)
//Mobile이 아니면 -1, mobile이면 정수
const mobile = await userAgent?.indexOf('Mobi')
console.log('mobile !== -1',mobile !== -1)
// mobile props 넘겨주기
return { pageProps, mobile };
};
export default MyApp;
참고 자료
https://typo.tistory.com/entry/Nextjs-%EA%B8%B0%EB%B3%B8%EA%B8%B0%EB%8A%A5-userAgent-%EC%A0%95%EB%B3%B4-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0
https://www.howdy-mj.me/next/how-to-detect-device/
2. next.config.js에 subdomain을 추가하여 리다이렉트 시키기
module.exports = {
return [
{
source: "/:path*",
has: [
{
type: "header",
key:'User-Agent',
value:"(.*Mobil.*)",
},
],
destination: "https://m.pandaparts.co.kr/:path*",
permanent: false,
},
]
}
}
모바일인 경우는 정규표현식으로 인해 /mobi/g 로 user-agent를 인식한다.
조건문이 되면 데스티네이션으로 리다리엑팅시킨다.
참고 자료
https://nextjs.org/docs/api-reference/next.config.js/redirects
반응형
'Frontend > React & React.Native &Next.js' 카테고리의 다른 글
ReactJS) get 검색할때 queryString # 뒤에 내용 못가져올때 (0) | 2022.03.15 |
---|---|
ReactJS) 게시판 작성시 띄어쓰기 안될때 nl2br 적용 (0) | 2022.03.11 |
NextJs) 상세페이지 만들기 (0) | 2022.01.26 |
React)React에서 kakao sdk 불러오기(next js, react 에서 kakao is not defined) 카카오 채팅 (0) | 2022.01.25 |
React) Html 데이터를 text만 추출하기 (0) | 2022.01.04 |