vue項(xiàng)目頁(yè)面刷新后報(bào)404的解決方法
這種情況通常是由于 前端路由? 和 瀏覽器直接訪問(wèn)? 的差異導(dǎo)致的。主要有以下幾個(gè)原因和解決方案:
主要原因
1. 路由模式問(wèn)題(History vs Hash)
// 如果使用 history 模式,需要服務(wù)器配置
const router = new VueRouter({
mode: 'history', // 需要服務(wù)器支持
// mode: 'hash', // 直接訪問(wèn)不會(huì)有問(wèn)題,但URL有#號(hào)
routes: [...]
})2. 服務(wù)器配置問(wèn)題
當(dāng)直接輸入U(xiǎn)RL時(shí),瀏覽器會(huì)向服務(wù)器請(qǐng)求該路徑,如果服務(wù)器沒(méi)有正確配置,會(huì)返回404。
解決方案
方案1:配置服務(wù)器重定向
Nginx 配置:
location / {
try_files $uri $uri/ /index.html;
}Apache 配置(.htaccess):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>方案2:使用 Hash 模式
const router = new VueRouter({
mode: 'hash', // URL會(huì)包含 #/path
routes: [...]
})方案3:開(kāi)發(fā)環(huán)境配置(webpack-dev-server)
在 vue.config.js中:
module.exports = {
devServer: {
historyApiFallback: true,
// 或者更詳細(xì)的配置
historyApiFallback: {
rewrites: [
{ from: /.*/, to: '/index.html' }
]
}
}
}檢查步驟
確認(rèn)當(dāng)前路由模式:
console.log(router.mode) // 查看是 history 還是 hash
檢查路由配置:
// 確保路由正確定義
const routes = [
{
path: '/your-path', // 你訪問(wèn)的路徑
component: YourComponent,
name: 'YourRoute'
}
]驗(yàn)證路由跳轉(zhuǎn):
<template>
<!-- 這兩種方式應(yīng)該都能工作 -->
<router-link to="/your-path">跳轉(zhuǎn)</router-link>
<button @click="$router.push('/your-path')">編程式導(dǎo)航</button>
</template>實(shí)際示例
假設(shè)你的路由配置:
// router.js
const routes = [
{
path: '/user/:id',
component: UserProfile,
name: 'user'
}
]直接訪問(wèn)問(wèn)題:
- ? 直接輸入:
http://yoursite.com/user/123(可能404) - ? 通過(guò)
<router-link to="/user/123">訪問(wèn)(正常)
解決方案:
// vue.config.js
module.exports = {
devServer: {
historyApiFallback: true
},
// 生產(chǎn)環(huán)境構(gòu)建路徑
publicPath: process.env.NODE_ENV === 'production' ? '/' : '/'
}總結(jié)
- router-link 能訪問(wèn):因?yàn)檫@是前端路由跳轉(zhuǎn),不請(qǐng)求服務(wù)器
- 直接輸入U(xiǎn)RL不能訪問(wèn):瀏覽器向服務(wù)器請(qǐng)求該路徑,服務(wù)器沒(méi)有對(duì)應(yīng)資源
- 解決方案:配置服務(wù)器將所有路由指向 index.html,讓 Vue Router 處理路由
你用的是哪種服務(wù)器環(huán)境?我可以提供更具體的配置方案。
到此這篇關(guān)于vue項(xiàng)目頁(yè)面刷新后報(bào)404的解決方法的文章就介紹到這了,更多相關(guān)vue頁(yè)面刷新404內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Vue頁(yè)面切換空白與刷新404問(wèn)題的深度解析
- vue3動(dòng)態(tài)路由解決刷新頁(yè)面空白或跳轉(zhuǎn)404問(wèn)題
- Vue history模式刷新頁(yè)面404問(wèn)題及解決
- vue項(xiàng)目頁(yè)面刷新404錯(cuò)誤的解決辦法
- vue動(dòng)態(tài)路由刷新失效以及404頁(yè)面處理辦法
- vue項(xiàng)目history模式刷新404問(wèn)題解決辦法
- vue?使用addRoutes動(dòng)態(tài)添加路由及刷新頁(yè)面跳轉(zhuǎn)404路由的問(wèn)題解決方案
- vue-router4動(dòng)態(tài)路由刷新404/白屏的解決
相關(guān)文章
axios全局注冊(cè),設(shè)置token,以及全局設(shè)置url請(qǐng)求網(wǎng)段的方法
今天小編就為大家分享一篇axios全局注冊(cè),設(shè)置token,以及全局設(shè)置url請(qǐng)求網(wǎng)段的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
vue如何通過(guò)props方式在子組件中獲取相應(yīng)的對(duì)象
這篇文章主要介紹了vue如何通過(guò)props方式在子組件中獲取相應(yīng)的對(duì)象,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
vant中的Cascader級(jí)聯(lián)選擇異步加載地區(qū)數(shù)據(jù)方式
這篇文章主要介紹了vant中的Cascader級(jí)聯(lián)選擇異步加載地區(qū)數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
Vue中使用 ElementUi 的 el-select 實(shí)現(xiàn)全選功能(思路詳解
在開(kāi)發(fā)中,有一個(gè)需求是 選項(xiàng)組件中使用到一個(gè) 全選的功能,特在這記錄下實(shí)現(xiàn)的方法,方便后續(xù)的查閱,以及方便大家查閱借鑒,對(duì)vue ElementUi 全選功能感興趣的朋友一起看看吧2024-02-02
關(guān)于Vue實(shí)例創(chuàng)建的整體流程
這篇文章主要介紹了關(guān)于Vue實(shí)例創(chuàng)建的整體流程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
關(guān)于axios配置請(qǐng)求頭content-type實(shí)例詳解
現(xiàn)在前端開(kāi)發(fā)中需要通過(guò)Ajax發(fā)送請(qǐng)求獲取后端數(shù)據(jù)是很普遍的一件事情了,下面這篇文章主要介紹了關(guān)于axios配置請(qǐng)求頭content-type的相關(guān)資料,需要的朋友可以參考下2022-04-04
使用vue3重構(gòu)拼圖游戲的實(shí)現(xiàn)示例
這篇文章主要介紹了使用vue3重構(gòu)拼圖游戲的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
vue App.vue中的公共組件改變值觸發(fā)其他組件或.vue頁(yè)面監(jiān)聽(tīng)
這篇文章主要介紹了vue App.vue里的公共組件改變值觸發(fā)其他組件或.vue頁(yè)面監(jiān)聽(tīng),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05

