緣由解析:javascript
之因此你在瀏覽器內能夠由首頁跳轉到其餘路由地址,是由於這是由前端自行渲染的,你在React Router定義了對應的路由,腳本並無刷新網頁訪問後臺,是JS動態更改了location。html
當你刷新時,你首先是訪問的後臺地址,而後返回的頁面內加載了React代碼,最後在瀏覽器內執行;也就是說若是這個時候報404,是由於你後臺並無針對這個路由給出返回HTML內容,也談不上執行React Router了。前端
解決方案一:java
若是你指望全部的路由都由React Router來定義,只有你的後臺,不管任何路徑,都返回index.html就行了。剩下的事情交給React Router。那麼你要作的就是修改後臺服務器,能夠放在apache,也能夠放在你的java路由內作一個通配路徑處理。react
解決方案二:apache
關鍵點是要明白客戶端路由和服務端路由的區別。服務端路由,不一樣的服務器配置的方式不一樣,樓主本身查。另一種簡單的解決方法,使用HashRouter,不要使用BrowserRouter,這樣全部的請求都會定位到index.html這一個頁面,服務器端也不須要任何配置了。瀏覽器
import { BrowserRouter as Router, Route, Link } from 'react-router-dom'; #改成 import { HashRouter as Router, Route, Link } from 'react-router-dom';
就是把 BrowserRouter
改爲HashRouter
便可。服務器