關(guān)于vue項(xiàng)目部署后刷新網(wǎng)頁(yè)報(bào)404錯(cuò)誤解決
我的項(xiàng)目,前端是vue項(xiàng)目在部署之后可以正常訪問(wèn),流程沒(méi)有問(wèn)題,可是刷新之后瀏覽器會(huì)返回404錯(cuò)誤。
部署使用的是nginx,經(jīng)常用來(lái)部署項(xiàng)目,所以容器肯定沒(méi)有問(wèn)題,
這種問(wèn)題在我直接啟動(dòng)時(shí)并沒(méi)有出現(xiàn)過(guò),所以可以猜測(cè)是打包時(shí)出現(xiàn)的問(wèn)題,
報(bào)404錯(cuò)誤說(shuō)明是路由的問(wèn)題
vue管理路由的是"router" 目標(biāo)明確了,去找router的配置文件
import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) /* Layout */ import Layout from '@/layout' // 公共路由 export const constantRoutes = [ ........ ] // 動(dòng)態(tài)路由,基于用戶權(quán)限動(dòng)態(tài)去加載 export const dynamicRoutes = [ ........ ] export default new Router({ mode: 'history', scrollBehavior: () => ({ y: 0 }), routes: constantRoutes })
公共路由與動(dòng)態(tài)路由不會(huì)有錯(cuò),不然這個(gè)bug是撐不到部署才出現(xiàn),只能是下方的初始化路由時(shí)出的問(wèn)題。
看這句話:
mode: 'history',
router有兩種模式
1.hash模式:原理是onhashchange事件 請(qǐng)求中是在hash值之前的內(nèi)容,所以請(qǐng)求始終是有效的,如請(qǐng)求的是http://www.baidu.com/123456,只需要有http://www.baidu.com的路由就不會(huì)出現(xiàn)404錯(cuò)誤所以改成這個(gè)就不會(huì)出現(xiàn)404錯(cuò)誤。
2.history模式:原理是利用了h5的Interface 中的pushState()方法和replaceState()方法,它們提供了對(duì)瀏覽器歷史記錄進(jìn)行修改的功能,但當(dāng)它們執(zhí)行修改時(shí),雖然改變了當(dāng)前的 URL,但瀏覽器不會(huì)立即向后端發(fā)送請(qǐng)求。所以就造成了客戶端的URL和服務(wù)器請(qǐng)求的url不一致,才出現(xiàn)的url錯(cuò)誤。
所以:
mode: 'hash',
成功解決
可是還有個(gè)問(wèn)題:
這樣的話history模式的同步更新瀏覽器歷史記錄功能就沒(méi)有了,這肯定不行
所以我想到history模式出現(xiàn)404無(wú)非是因?yàn)榭蛻舳说腢RL和服務(wù)器請(qǐng)求的url不一致導(dǎo)致的,我們可以在服務(wù)器訪問(wèn)受限時(shí)指定一個(gè)登記過(guò)的全局路由,就是首頁(yè)面,這樣就可以通過(guò)路由的檢測(cè),從而達(dá)到hash模式的效果了,所以要在nginx.config中修改:
重啟nginx,測(cè)試沒(méi)問(wèn)題,解決。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue圖片加載失敗時(shí)用默認(rèn)圖片替換的方法
這篇文章主要給大家介紹了關(guān)于vue圖片加載失敗時(shí)用默認(rèn)圖片替換的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08element ui 表格動(dòng)態(tài)列顯示空白bug 修復(fù)方法
今天小編就為大家分享一篇element ui 表格動(dòng)態(tài)列顯示空白bug 修復(fù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09可能是全網(wǎng)vue?v-model最詳細(xì)講解教程
Vue官網(wǎng)教程上關(guān)于v-model的講解不是十分的詳細(xì),寫這篇文章的目的就是詳細(xì)的剖析一下,下面這篇文章主要給大家介紹了關(guān)于vue?v-model最詳細(xì)講解的相關(guān)資料,需要的朋友可以參考下2022-11-11vue使用拖拽方式創(chuàng)建結(jié)構(gòu)樹(shù)
這篇文章主要為大家詳細(xì)介紹了vue使用拖拽方式創(chuàng)建結(jié)構(gòu)樹(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10VUE 項(xiàng)目在IE11白屏報(bào)錯(cuò) SCRIPT1002: 語(yǔ)法錯(cuò)誤的解決
這篇文章主要介紹了VUE 項(xiàng)目在IE11白屏報(bào)錯(cuò) SCRIPT1002: 語(yǔ)法錯(cuò)誤的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09完美解決vue 中多個(gè)echarts圖表自適應(yīng)的問(wèn)題
這篇文章主要介紹了完美解決vue 中多個(gè)echarts圖表自適應(yīng)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07elementplus?card?懸浮菜單的實(shí)現(xiàn)
本文主要介紹了elementplus?card?懸浮菜單的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07