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


原因解析:

之所以你在瀏覽器內可以由首頁跳轉到其他路由地址,是因為這是由前端自行渲染的,你在React Router定義了對應的路由,腳本並沒有刷新網頁訪問后台,是JS動態更改了location。

當你刷新時,你首先是訪問的后台地址,然后返回的頁面內加載了React代碼,最后在瀏覽器內執行;也就是說如果這個時候報404,是因為你后台並沒有針對這個路由給出返回HTML內容,也談不上執行React Router了。

解決方案一:

如果你期望所有的路由都由React Router來定義,只有你的后台,無論任何路徑,都返回index.html就好了。剩下的事情交給React Router。那么你要做的就是修改后台服務器,可以放在apache,也可以放在你的java路由內做一個通配路徑處理。

解決方案二:

關鍵點是要明白客戶端路由和服務端路由的區別。服務端路由,不同的服務器配置的方式不同,樓主自己查。另外一種簡單的解決方法,使用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即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM