스택큐힙리스트

React-router URL는 새로고침하거나 직접 작성할 때 작동하지 않습니다. 본문

카테고리 없음

React-router URL는 새로고침하거나 직접 작성할 때 작동하지 않습니다.

스택큐힙리스트 2023. 12. 23. 02:11
반응형

React-router를 사용하고 있으며, 링크 버튼을 클릭할 때는 잘 작동하지만, 웹페이지를 새로 고침하면 원하는 내용이 로드되지 않습니다.


예를 들어, 저는 localhost/joblist에 있고 모든 것이 맞습니다. 왜냐하면 링크를 눌러 이곳에 도착했기 때문입니다. 그러나 웹페이지를 새로 고침하면 다음과 같은 오류가 발생합니다:


Cannot GET /joblist

기본적으로 이렇게 작동하지 않았습니다. 처음에는 URL을 localhost/#/localhost/#/joblist로 가지고 있었고, 이는 완벽하게 작동했습니다. 그러나 이러한 유형의 URL이 마음에 들지 않아 #를 제거하려고 시도했고, 다음과 같이 작성했습니다:


Router.run(routes, Router.HistoryLocation, function (Handler) {
React.render(<Handler/>, document.body);
});

이 문제는 localhost/에서는 발생하지 않으며, 항상 원하는 내용을 반환합니다.


이 앱은 싱글페이지이므로, /joblist는 어떤 서버에게도 요청할 필요가 없습니다.

전체 라우터입니다.


var routes = (
<Route name=app path=/ handler={App}>
<Route name=joblist path=/joblist handler={JobList}/>
<DefaultRoute handler={Dashboard}/>
<NotFoundRoute handler={NotFound}/>
</Route>
);
Router.run(routes, Router.HistoryLocation, function (Handler) {
React.render(<Handler/>, document.body);
});

답변 1


또한, 시작하기 위해 몇 가지 스타터 키트를 추천합니다. 기술 스택에 맞는 하나를 선택하세요 (기억하세요, React는 MVC의 V에 불과하며, 완전한 앱을 구축하기 위해서는 더 많은 것이 필요합니다). 먼저 Facebook이 자체로 게시한 것을 살펴보는 것을 추천합니다:


또는 커뮤니티에서 여러 개 중 하나를 선택하세요. 이제는 모두를 색인화하려는 멋진 사이트가 있습니다:



저는 다음으로 시작하였습니다:



현재는 위의 두 스타터 킷에 영감을 받아 개조한 버전의 유니버설 렌더링을 사용하고 있지만, 지금은 사용할 수 없는 상태입니다.


퀘스트에 행운을 빕니다!

답변 2

리액트 라우터(URLs)는 새로고침하거나 수동으로 작성할 때 작동하지 않습니다.
SEO(Search Engine Optimization, 검색 엔진 최적화)는 현대 인터넷 시장에서 매우 중요한 요소입니다. SEO는 웹 사이트의 가시성과 검색 엔진 상위 랭킹을 향상시키는 데 도움이 됩니다. 그러나 리액트 라우터는 페이지 간 전환에 사용되는 동적 URL 링크를 관리하는 방식으로 설계되었으며, 이로 인해 새로고침이나 URL을 수동으로 작성하는 경우 제대로 작동하지 않을 수 있습니다.
이 문제는 실제로 리액트 라우터가 단일 페이지 응용 프로그램(SPA, Single Page Application)으로 작동하는 방식에 기인합니다. SPA는 초기에 모든 필수 리소스를 로드하고 이후에는 필요한 데이터만 비동기적으로 로드하여 페이지 간 전환을 수행합니다. 이를 위해 리액트 라우터는 브라우저에서 기본 페이지(URL)를 설정하고, 그 이후에는 JavaScript를 사용하여 페이지 및 컴포넌트를 업데이트합니다.
하지만, 일반적으로 웹 브라우저는 URL에 대해 GET 요청을 수행하며, 서버는 이 요청에 대한 적절한 응답을 반환합니다. 그러나 리액트 라우터를 사용하면 서버에 대한 요청이 없고, 모든 컨텐츠가 브라우저에서 동적으로 로드됩니다. 따라서 새로고침이나 URL을 수동으로 작성하는 경우, 서버는 해당 URL에 대한 콘텐츠를 찾을 수 없어 오류가 발생합니다.
이 문제를 해결하기 위해 React-router는 사용자가 접속한 웹 서버로 모든 요청이 전송되도록 구성할 수 있는 서버 사이드 라우팅(Server-side Routing)과 같은 기능을 제공합니다. 이렇게하면 브라우저가 URL에 대한 요청을 서버로 전송하고 서버에서 해당 URL에 대한 적절한 처리를 할 수 있습니다.
또한, 검색 엔진 크롤러는 페이지를 찾고 인덱싱하는 동안 URL을 사용합니다. 따라서 라우팅이 작동하지 않은 페이지를 수동으로 입력하는 경우, 검색 엔진은 해당 페이지를 찾지 못하고 인덱싱하지 못합니다. 이로 인해 웹 사이트의 SEO 측면에서 부정적인 영향을 받을 수 있습니다.
이 문제를 해결하기 위해 라우팅이 작동하지 않는 URL에 대해 서버에서 정적 HTML을 반환하는 서버 사이드 렌더링(Server-side Rendering) 기술을 사용할 수 있습니다. 이렇게하면 검색 엔진이 브라우저처럼 정적 콘텐츠를 받게되어 페이지를 인덱싱하고 랭킹을 책정할 수 있습니다. 이러한 접근 방식을 사용하면 SEO에 민감한 URL 문제를 해결할 수 있습니다.
요약하자면, 리액트 라우터는 새로고침하거나 URL을 수동으로 입력할 때 제대로 작동하지 않을 수 있습니다. 이는 리액트 라우터가 SPA로 작동하는 방식과 관련이 있습니다. 이 문제를 해결하려면 서버 사이드 라우팅이나 서버 사이드 렌더링과 같은 기술을 사용할 수 있습니다. 이를 통해 SEO 문제를 완화하고 검색 엔진의 색인과 페이지 랭킹을 개선할 수 있습니다.

반응형
Comments