tydanei 2019-07-01
场景描述:
www.abc.com, 之后点击界面里面的logout,前端路由处理,跳转到www.abc.com/login/login的时候,没有报404?/login逻辑:this.$router.push({name: 'login'});贴下前端路由配置
routes: [
{
name: 'home',
path: '/',
component: Home,
meta: { requiresAuth: true },
},
{
path: '/login',
name: 'login',
component: Login,
},
{
path: '*',
component: NotFound,
}
]现有nginx配置
location / {
root: /var/data/static;
}解决:
为何点击退出可以正常显示登录页面?
因为点击退出,使用的redirect是前端路由this.$router.push({name: 'login'});来实现的,这时候已经有index.html 和相关的js了,可以直接使用前端路由跳转到/login路由对应的组件为何刷新的时候显示: nginx/404?
如何解决?
在nginx的location /{root xxxpath}中添加try_file: /index.html的配置解释:
/login的路径,便会转到/路径处理。root路径下(是静态文件的root目录,不是linux的root目录)没有login文件,就会try_file规则,返回index.html,/404也可以写在前端路由中了