vue-router 使用history模式,刷新或者手动输入URL返回404?

使用了mode: history,后台nginx也设置了

location / {
  try_files $uri $uri/ /index.html;
}

我采取的是将vue项目打包后放入node服务端的静态资源中访问:

app.use('/', express.static(__dirname + '/web')) // web编译后静态文件托管

但是除了'/'路由,刷新或者手动输入其他页面的url访问将会是404

阅读 4.3k
2 个回答

因为题主这句代码,

app.use('/', express.static(__dirname + '/web'))

只对根路径/ 有用.

可以这样试试,

// 设置静态资源目录
app.use(express.static('./web'))


app.use(function(req, res, next) {
  // 当访问任意路由时,都重定向到/ , 就会自动请求静态资源目录下的index.html
  res.redirect('/')

})

我是这样想的,没有验证,题主可以先试试。

用了 nginx 就完全没必要再用 node 服务器了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题