react 打包後,項目部署完畢,刷新頁面報錯(404)

緣由解析: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便可。服務器

相關文章
相關標籤/搜索