2017-12-25 12 views
0

라우터를 http://localhost:8080/login과 같이 호출 할 때마다 반응 라우터가 경로를 편집하고 http://localhost:8080/#/login (유효한 경로)으로 경로를 재 지정하려고 할 때 http://localhost:8080/login#/ (잘못된 경로)으로 경로를 변경합니다. 어떻게해야합니까?반응의 해시 태그 라우터에서 해시 태그없이 라우팅하는 방법은 무엇입니까?

난 이미 내 webpack.config에

historyApiFallback: { index: '/' },

를 추가하는 시도했습니다. 이 정보를 찾는 다른 방법을 모르겠습니다.

내 코드 : https://pastebin.com/raw/XCvgV6rP

+0

라우트 구성 및 통화를 공유 할 수 있습니까? out-of-the-box 반응 라우터는 정확하게 "유효"합니다. –

+0

여기에 내 코드 @AndyTheos https://pastebin.com/raw/XCvgV6rP – Computor

답변

0

당신은 당신이 현재하는 index.js 파일에 가져 HashRouter 대신 BrowserRouter를 사용해야하는 문제를 해결합니다.

HashRouter는 UI의 URL을 유지하기 위해 URL의 해시 부분 (예 : window.location.hash)을 사용하지만 BrowserRouter는 UI를 유지하기 위해 HTML5 기록 API (pushState, replaceState 및 popstate 이벤트)를 사용합니다. URL과 동기화됩니다.

출처 : 당신이 브라우저의 URL 표시 줄에 http://localhost:8080/login를 입력하면, 후 HashRouter BrowserRouter

+0

질문에 언급 된 문제는 라우터 사용 \ 선택에 관한 것이 아닙니다. 잘못된 URL 리디렉션 문제입니다. –

+0

@Andy Theos 알고 있습니다 만, 일반적으로 최근의 React 프로젝트에서는 BrowserRouter가 더 나은 선택입니다. 그게 내가 내 대답에 넣으려고 선택한 이유는 무엇입니까 – Marco

+0

동의하지만 질문에서 우리는 프로젝트와 HashRouter를 사용하는 이유에 대한 많은 정보를 얻을 수 없습니다. –

0

을 누르면은 입력, 브라우저, login로 이동 한 후 해시 라우터는 결국 /login#/하고, 자신의 슬래시를 추가. Linkhistory.push을 사용하는 경우 HashRouter는 정상적으로 잘 리디렉션합니다. HashRouter를 사용하면 /login 그 자체가 없습니다.

@Marco 대답을보세요. 어쨌든 BrowserRouter 을 사용하면 성가신 hashbang을 제거 할 수 있습니다.