You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

vue-router history模式下访问/dashboard路径返回404错误如何解决

问题根本原因

你在vue-router配置中开启了mode: 'history',该模式依赖HTML5 History API实现无哈希(#)的干净路径,但是你当前部署/本地开发的web服务器没有做兜底路由配置:

  • 访问根路径/时,服务器默认返回项目入口的index.html,vue-router拿到路由后正常渲染对应组件
  • 直接访问/dashboard路径时,浏览器会直接向服务器请求该路径对应的资源,服务器没有对应路径的静态资源/接口,就直接返回404错误,vue-router根本没有被加载执行,自然无法渲染对应组件。
解决方案

本地开发场景

如果是自行搭建的webpack-dev-server开发服务,在webpack配置中添加以下参数即可:

devServer: {
  historyApiFallback: true
}

如果是vue-cli/vite搭建的项目,默认已经内置了history模式的fallback支持,不需要额外配置。如果是用其他本地服务(比如本地启动的nginx),参考下面生产环境的对应配置即可。

生产部署场景

根据你使用的web服务器做对应的兜底配置,所有路径请求都优先返回项目的index.html,让vue-router接管路由逻辑:

Nginx配置示例

修改nginx.conf对应的server块:

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>

Node.js Express服务配置示例

先安装connect-history-api-fallback中间件,再在服务启动代码中引入:

const history = require('connect-history-api-fallback')
app.use(history())

如果你的项目部署在域名的子路径下,还需要在vue-router配置中添加base参数,比如部署在/admin/路径下,配置为base: '/admin/'即可。

内容的提问来源于stack exchange,提问作者Moemen Hussein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:45:04