解决Vue应用中遇到路由刷新后出现 404 错误

解释:

Vue 应用中遇到路由刷新后出现 404 错误,通常是因为 Vue 应用是个单页应用(SPA),它通过 Vue Router 管理路由,通过 HTML5 History Mode 实现页面导航无需重新加载页面。当直接访问非首页的路由或者刷新页面时,服务器会尝试寻找对应的真实物理路径,找不到就会返回 404 错误。

解决方法:

  1. 服务器配置:需要配置服务器,使其可以正确处理所有路由请求,并返回同一个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>

对于 Nginx: 在 Nginx 配置文件中添加如下配置:
*

复制代码
  location / {
    try_files $uri $uri/ /index.html;
  }

对于 Node.js: 如果你使用的是 Node.js 的 Express 服务器,可以添加以下路由来捕获所有路由请求并返回index.html

复制代码
  app.get('*', (req, res) => {
    res.sendFile(path.resolve(__dirname, 'public', 'index.html'));
  });
  • 使用 Hash Mode:另一种方法是使用 Vue Router 的 Hash Mode,它不需要服务器端的特别配置。在 Vue Router 中设置mode: 'hash'即可启用。

  • 例如,在 Vue 应用的入口文件main.js中配置 Vue Router:

复制代码
  import Vue from 'vue';
  import VueRouter from 'vue-router';
  import App from './App.vue';
   
  Vue.use(VueRouter);
   
  const router = new VueRouter({
    mode: 'hash', // 启用 hash mode
    routes: [
      // 定义路由
    ]
  });
   
  new Vue({
    router,
    render: h => h(App)
  }).$mount('#app');

选择合适的方法进行配置,即可解决 Vue 应用在路由刷新时出现的 404 错误。

相关推荐
sbjdhjd11 小时前
Redis 主从复制、哨兵高可用与 Cluster 集群部署实验手册
运维·前端·redis·云原生·开源·bootstrap·html
乐兮创想 小林11 小时前
企业官网移动端性能优化实战:从 Core Web Vitals 到图片/CDN/响应式的工程清单
前端·性能优化·网站建设·北京网站建设公司
疯狂SQL11 小时前
JWT 在线解码、验签、生成一篇讲透:附前端实现、工具架构与在线体验地址
javascript·jwt·编解码·jwt测试
前端一小卒12 小时前
不手写代码的第 30 天,我才明白前端这个岗位还剩什么
前端·javascript·ai编程
Ajie'Blog12 小时前
Copilot Agent Tasks API 开放:AI 编程开始进入后台任务时代
服务器·前端·javascript·人工智能·copilot·ai编程
老毛肚12 小时前
jeecgboot vue TS & 模板化 04
前端·javascript·vue.js
晓131312 小时前
【Cocos Creator 2.x】篇——第二章 入门
javascript·游戏引擎
AI_零食13 小时前
鸿蒙PC Electron跨平台应用开发:24时区时间表应用详解
前端·华为·electron·开源·harmonyos·鸿蒙
Electrolux14 小时前
[onlyoffice-v9]纯前端怎么实现编辑预览office
前端·javascript·github
VidDown14 小时前
Webhook 调试器:让第三方回调“原形毕露”
java·开发语言·javascript·编辑器·postman